1. 程式人生 > >【Scala一】Scala各種符號的含義

【Scala一】Scala各種符號的含義

 

::運算子

::(兩個冒號)表示普通元素與List的連線操作,比如:

val a = 1
val b = List(3, 4)
val c = 1 :: b

則c的結果是List(1,3,4),需要注意的是,1:: b操作,::是右側物件的方法,即它是b物件的方法,而::左側的運算數是::方法的引數,所以1::b的含義是b.::(1)

+ - * / %運算子

在Scala中,+,-,*,/都是函式,比如 1+2,實質上是物件1上呼叫+函式,傳入的引數是2,等價於(1).+(2)

=>

_N(下劃線數字)

val pair = (99, "Luftballons")
println(pair._1)
println(pair._2)

_N用於訪問元組的第N個元素(N從1開始算起),元組不同於List或者Array,元組(Tuple)中的元素可以不同

->

->方法是所有Scala物件都有的方法,比如A->B,->方法呼叫的結果是返回一個二元的元組(A,B)

<-

def printArgs(args: Array[String]): Unit = {
   for (arg <- args) //表示什麼含義,<-應該是一個函式,這個函式是哪個物件呼叫的?
   println(arg)
}

 Scala方法定義語法

 

 

如果函式體中的語句是一個,那麼可以將包著方法體的{}省略,如:

def max(x :Int, y :Int) :Int = if (x > y) x else y;

 <- 運算子

 <-用於for迴圈中,如下所示

for (A <- B) {
   println(A)
}

 <-用於遍歷集合物件(可遍歷物件)B,在每次遍歷的過程中,生成一個新的物件A,這個A是val,而不是var,然後對迴圈體中對A進行處理,<-在Scala中稱為generator。 不需要顯式的指定A的型別,因為Scala使用自動推導的方式根據B的元素型別得出A的型別