第二章:控制結(jié)構(gòu)和函數(shù)

條件表達(dá)式

語(yǔ)法結(jié)構(gòu): ? if (判斷條件) {邏輯語(yǔ)句} else {邏輯語(yǔ)句}

在scala中, if/else 表達(dá)式有值, 本質(zhì)上就是塊表達(dá)式是有值的;?

val a: Any =if (0 ==0)"a" else 1

=>所有數(shù)據(jù)類(lèi)型的超類(lèi)為 Any 類(lèi)型

val b: Int =if (0 ==0)1 else 2

val c: Unit =if (0 ==0)1

=>為了解決沒(méi)有else的if語(yǔ)句, 在scala中引入 Unit 類(lèi)型,寫(xiě)作 () ;不帶else的 if 語(yǔ)句等同于: if (0=0) 1 else ()

=>() 表示 無(wú)用值 的占位符, 就是 "無(wú)值" 的值;


塊表達(dá)式和賦值

在scala 中, { } 塊包含一系列表達(dá)式, 其結(jié)果也是一個(gè)表達(dá)式; 塊中最后一個(gè)表達(dá)式的值就是塊的值;

val d = { val e =3 }

=>在scala中, val e=3 這個(gè)賦值動(dòng)作本身是沒(méi)有值的, 或者說(shuō)它們的值是Unit類(lèi)型, 所以 d 的值為()


循環(huán)

scala擁有與java相同的 while和do 循環(huán),但是for 循環(huán)做了改變;

for( i <- 集合變量或表達(dá)式 ) { }

=>scala 并沒(méi)有提供break 或 continue 語(yǔ)句來(lái)退出循環(huán),可以使用 boolean類(lèi)型的控制變量, 以及擁有跳出循環(huán)的 return 來(lái)完成 break和continue 的功能;

=>for循環(huán)可以提供多個(gè)循環(huán)變量: for ( i <- 1 to 3; j <- 1 to 5 ){ };

=>for循環(huán)可以提供守衛(wèi): for ( i <- 1 to 3 if i != 2 ) { }

=>yield 關(guān)鍵字: 在循環(huán)體中加上yield關(guān)鍵字,循壞會(huì)創(chuàng)建一個(gè)集合,此集合的類(lèi)型會(huì)根據(jù)要遍歷的集合的類(lèi)型保持一致,每次迭代生成一個(gè)值放入集合;


函數(shù)

個(gè)人認(rèn)為,scala中函數(shù)和方法的區(qū)別就在于 是否是基于對(duì)象的;函數(shù)可以獨(dú)立與對(duì)象單獨(dú)存在,并且函數(shù)還可分為匿名函數(shù)和普通函數(shù),都可以作為變量進(jìn)行傳值; 而方法就必須依附與對(duì)象才能進(jìn)行使用;


def聲明函數(shù)的數(shù)據(jù)類(lèi)型:?

def ?fun_def ( i:String ):String = { "this is def "}

fun_def : ?(i:String)String

?匿名函數(shù)的數(shù)據(jù)類(lèi)型:

val ?no_name = (i:String) => { "this is no name" }

no_name : String => String = <function1>


=>理論上編譯器可以通過(guò)=右側(cè)的表達(dá)式的類(lèi)型推斷出返回值類(lèi)型,可以不寫(xiě),但一定要寫(xiě)上=符號(hào); 如果不寫(xiě)=符號(hào),系統(tǒng)會(huì)認(rèn)為是過(guò)程函數(shù), 默認(rèn)加上的是 :Unit= 空值標(biāo)記,類(lèi)似void;

=>scala中有默認(rèn)參數(shù), def ?a ( i:String, j:String="test"):String={ i+j }

=> lazy val name = xxx ? 懶值并不是非沒(méi)有額外開(kāi)銷(xiāo),我們每次訪問(wèn)懶值時(shí),都會(huì)一個(gè)方法被調(diào)用,而這個(gè)方法將會(huì)以線程安全的方式檢查該值是否被初始化;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容