/**
* * self =>
* self 並非關鍵字,你可以用任意其他字元替代
* self只是給this 關鍵字起了乙個別名
* @author yyyyy
* @version 1.0
* **/
/**
* 在內部類中的應用
*///當前物件 this的別名
self =>
val name = "世界"
//此處的this 和self 都是當前物件:世界
println(this.name)
println(self.name)
println("-------------------")
//內部類
class china
new china
}
世界
世界-------------------
中國世界
process finished with exit code 0
/**
* 依賴注入
*///生命起源
trait water
//有了水才有動物,動物會移動
trait animal2 extends water
//有了水源也可以有植物,植物會生根,發芽
trait botany extends water
//人類也是動物的一種
trait human
object diqiu
println(zhangsan.name)
zhangsan.move("直立")
println("----------------------")
/*** 混入botany,那麼李四也就不是個人了
*/val lisi = new human with botany
println(lisi.name)
lisi.grow("直立")
}}
執行結果:
張三直立著移動
----------------------
李四直立發芽了
process finished with exit code 0
Scala中規約操作reduce與fold函式
規約操作是對容器的元素進行兩兩運算,將其 規約 為乙個值。常用的規約方法有reduce和fold,兩個方法唯一的差別是,reduce是從容器的兩個元素開始規約,而fold則是從提供的初始值開始規約。同樣地,對於無序容器而言,fold方法不保證規約時的遍歷順序,如要保證順序,請使用foldleft和f...
簡談scala 中的val 與 var
斷斷續續學習scala也有一段時間了,初期總對val 與var 的理解不太透徹,今天來做做總結。一般都知道val 表示不可變,var表示可變,比如 val s hello s world 錯誤,不能對val重新賦值 var i 1 i 2 沒有問題 但是在碰到可變與不可變資料結構的時候,容易造成迷惑...
scala快速上手 三 Scala 方法與函式
def fun a int b int unit fun 1,1 def fun1 a int b int a b println fun1 1,2 注意點 遞迴方法 5 的階乘 def fun2 num int int print fun2 5 包含預設引數值的函式 注意 1.預設值的函式中,如果...