W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
有了前面的 Scala 基礎(chǔ),從本篇開始由淺到易逐步介紹 Scala 編程的各個(gè)方面,博客不可能做到面面俱到,還是希望你有些編程基礎(chǔ),尤其是有些面向?qū)ο蟮木幊袒A(chǔ),如 Java,C++,C# 等更好。除支持函數(shù)化編程外,Scala 也是一個(gè)純面向?qū)ο蟮木幊陶Z言。本篇和下篇介紹 Scala 的類和對象。
首先介紹 Scala 的類定義,我們以一個(gè)簡單的例子開始,創(chuàng)建一個(gè)計(jì)算整數(shù)累計(jì)校驗(yàn)和的類
ChecksumAccumulator
class ChecksumAccumulator{
private var sum=0
def add(b:Byte) :Unit = sum +=b
def checksum() : Int = ~ (sum & 0xFF) +1
}
可以看到 Scala 類定義和 Java 非常類似,也是以 class 開始,和 Java 不同的,Scala 的缺省修飾符為 public ,也就是如果不帶有訪問范圍的修飾符 public,protected,private,Scala 缺省定義為 public。類的方法以 def 定義開始,要注意的 Scala 的方法的參數(shù)都是 val 類型,而不是 var 類型,因此在函數(shù)體內(nèi)不可以修改參數(shù)的值,比如如果你修改 add 方法如下:
def add(b:Byte) :Unit ={
b=1
sum+=b
}
此時(shí)編譯器會(huì)報(bào)錯(cuò):
/root/scala/demo.scala:5: error: reassignment to val
b=1
^
one error found
類的方法分兩種,一種是有返回值的,一種是不含返回值的,沒有返回值的主要是利用代碼的“副作用”,比如修改類的成員變量的值或者讀寫文件等。Scala 內(nèi)部其實(shí)將這種函數(shù)的返回值定為 Unit(類同 Java 的 void 類型),對于這種類型的方法,可以省略掉“=”號,因此如果你希望函數(shù)返回某個(gè)值,但忘了方法定義中的“=”,Scala 會(huì)忽略方法的返回值,而返回 Unit。
再強(qiáng)調(diào)一下,Scala 代碼無需使用“;”結(jié)尾,也不需要使用 return返回值,函數(shù)的最后一行的值就作為函數(shù)的返回值。
但如果你需要在一行中書寫多個(gè)語句,此時(shí)需要使用“;”隔開,不過不建議這么做。你也可以把一條語句分成幾行書寫,Scala 編譯器大部分情況下會(huì)推算出語句的結(jié)尾,不過這樣也不是一個(gè)好的編碼習(xí)慣。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: