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

 
  • :::

  • ::

:::運算符

:::(三個冒號)表示List的連接操作,比如:

 

Java代碼
  1. val a = List(12)   
  2. val b = List(34)   
  3. val c = a ::: b  
val a = List(1, 2)
val b = List(3, 4)
val c = a ::: b

 

 其中a,b保持不變,a和b連接產生一個新表List(1,2,3,4),而不是在a上面做add操作。
Scala中的List不同於Java的List,Java聲明final List javaList,表示javaList一旦初始化,那麼不能再爲它賦值,但是它其中的元素可以變化,
 

::運算符

::(兩個冒號)表示普通元素與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的類型

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章