1. 作為通配符,類似Java中的*. 如 import scala.math._
2. :_*作為一個整體,告訴編譯器你希望將某個引數當做引數序列處理
eg:
val s = sum(1 to 6:_*)就是將 1 to 6 當做引數序列處理
3. 指代一個集合中的兩個元素
eg:
例如我們要在一個Array a中篩選出偶數, 并乘以3,可以用以下這個辦法
a.filter(_%2==0).map(3*_)
又如要對緩沖陣列ArrayBuffer b排序,可以這樣:
val bSorted = b.sorted(_)
4. 在元組中,可以用方法_1,_2,_3訪問組員, 例如a._2 其中句點可以用空格替代
5. 使用模式匹配可以用來獲取元組的組員,例如
val (first,second,third)=t
但如果不是所有的部件都需要,那么可以在不需要的部件位置上使用_,比如上一例中val(first,second,_)=t
6. 還有一點,下劃線_代表的是某一型別的默認值.
var name = _ (前提必須是變數var 不能是val)
對于Int來說,它的默認值為0
對于Double來說,它的默認值是0.0
對于參考型別來說,它是null.
在Scala中無法直接操作方法,如果要操作方法,必須先將其轉換為函式,有兩種方法:
uj5u.com熱心網友回復:
Scala方法和函式的區別?1. 答題什么相似,當函式定義在類中,就表示方法,其他的都稱為函式
2. 函式可以作為一個引數傳入到方法中,而方法就不行
3. 在Scala中無法直接操作方法,如果要操作方法,必須先將其轉換成函式,
通常情況下,編譯器會自動將方法轉換成函式,
1. val fa = m _
//表示將m 方法轉換為函式
//在方法名稱m后面緊跟一個空格 和下劃線 告訴編譯器將方法轉換成函式,而不是呼叫這個方法,也可以顯示的告訴編譯器需要改將這個方法轉換成函式
val f1:(int)=>int = m
val l1: Seq[Int] => Int = sum1
print(l1(Array[Int](1, 2, 3, 45)))
4. 函式必須要有引數串列,而方法可以沒有引數串列
5. 在函式出現的地方我么你可以提供一個方法
在需要函式的地方,如果傳遞一個方法,會自動進行ETA展開(把方法轉換為函式)
如果我們直接把一個方法賦值給變數會報錯,(Missing arguments for method sum1(Int*))
如若我們指定變數的型別就是函式,name就可以通過編譯
2. 當然我們也可以強制把一個方法轉換給函式, m _ 用Scala中的部分應用函式:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/87924.html
標籤:其他開發語言
上一篇:開源一個微服務游戲框架
下一篇:pip安裝wad失敗如何設定
