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

Scala各種符號的含義

::: :: :::運算子 :::(三個冒號)表示List的連線操作,比如:

Java程式碼 收藏程式碼 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的連線操作,比如:

Java程式碼 收藏程式碼 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(下劃線數字)

Java程式碼 收藏程式碼 val pair = (99, “Luftballons”) println(pair._1) println(pair._2)

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

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

<-

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

Scala方法定義語法

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

Java程式碼 收藏程式碼 def max(x :Int, y :Int) :Int = if (x > y) x else y;

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

Java程式碼 收藏程式碼 for (A <- B) { println(A) }

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