Scala if 表達(dá)式

2018-09-28 18:16 更新

if 表達(dá)式

和其它語(yǔ)言(比如 Java,C#)相比,Scala 只內(nèi)置了為數(shù)不多的幾種程序控制語(yǔ)句: if,while,for ,try match 以及函數(shù)調(diào)用,這是因?yàn)閺腟cala 誕生開(kāi)始就包含了函數(shù)字面量,Scala 內(nèi)核沒(méi)有定義過(guò)多的控制結(jié)構(gòu),而是可以通過(guò)額外的庫(kù)來(lái)擴(kuò)展程序的控制結(jié)構(gòu)。

Scala的所有控制結(jié)構(gòu)都有返回結(jié)果,如果你使用過(guò) Java或C#,就可能了解 Java 提供的三元運(yùn)算符 ?: ,它的基本功能和 if 一樣,當(dāng)可以返回結(jié)果。Scala 在此基礎(chǔ)上所有控制結(jié)構(gòu)(while,try,if,等)都可以返回結(jié)果。這樣做的一個(gè)好處是,可以簡(jiǎn)化代碼,如果沒(méi)有這種特點(diǎn),程序員常常需要?jiǎng)?chuàng)建一個(gè)臨時(shí)變量用來(lái)保存結(jié)果。

總的來(lái)說(shuō),Scala 提供的基本程序控制結(jié)構(gòu),“麻雀雖小,五臟俱全”,雖然少,但足夠滿足其他指令式語(yǔ)言(如 Java,C++)所支持的程序控制功能,而且由于這些指令都有返回結(jié)果,可以使得代碼更為精簡(jiǎn)。

if 表達(dá)式

Scala 語(yǔ)言的 if 的基本功能和其它語(yǔ)言沒(méi)有什么不同,它根據(jù)條件執(zhí)行兩個(gè)不同的分支,比如,使用 Java 風(fēng)格編寫(xiě)下面 Scala 的 if 語(yǔ)句的一個(gè)例子:

var filename="default.txt"
if(!args.isEmpty)
  filename =args(0)

上面代碼和使用 Java 實(shí)現(xiàn)沒(méi)有太多區(qū)別,看起來(lái)不怎么像 Scala 風(fēng)格,我們重新改寫(xiě)一下,利用 if 可以返回結(jié)果這個(gè)特點(diǎn)。

val filename=
   if(!args.isEmpty)   args(0)
   else "default.txt"

首先這種代碼比前段代碼短,更重要的是這段代碼使用 val 而無(wú)需使用 var 類(lèi)型的變量。使用 val 為函數(shù)式編程風(fēng)格。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)