scala--=>符號的使用

(1)表示函數的類型(Function Type)
      例如:函數

1spa

def double(x: Int): Int = x*2code

函數double的類型就是 (x: Int) => Int 或者 Int => Int

備註: 當函數只有一個參數的時候,函數類型裏面括起來函數參數的括號是能夠省略的。

使用函數的類型,就能夠定義函數變量(Function Value/Function Variable)

那麼如今定義一個函數變量:

var x : (Int) => Int = double

(2)匿名函數(Anonymous functions/Function Literals/Lambda)

   例如:經過匿名函數定義一個函數變量xx

var xx = (x: Int) => x + 1

或者,給一個高階函數,傳遞一個函數:

val newList = List(1,2,3).map { (x: Int) => x * 2 }

3. By-Name Parameters

假設有以下兩個函數:
 ci

1it

2io

3table

4function

5匿名函數

6變量

7

8

9

10

def doubles(x: => Int) = {

    println("Now doubling " + x)

    x*2   

}

 

 

def f(x: Int): Int {

    println(s"Calling f($i)")

    i

}

 



那麼對於函數doubles而言,它的參數x就是by-name的。若是調用doubles的時候,直接給個普通的值或者非函數變量。那麼doubles的執行結果就跟普通的函數沒有區別。可是當把一個返回值爲Int類型的函數,例如f(2),傳遞給doubles的時候。那麼f(2)會被先計算出返回值2,返回值2傳入doubles參與運算。運算完成之後,f(2)會被doubles在執行之後,再調用一遍。

4. case語句
 

1

2

3

4

5

6

7

8

val = 10val = 20

    x: Int = 10

    y: Int = 20

val max = x > y match {

     case true => x

     case false => y

}

max: Int = 20

相關文章
相關標籤/搜索