鍍金池/ 教程/ Scala/ if 表達(dá)式
包對(duì)象
Ordered Trait
組合和繼承–定義 final 成員
基本數(shù)據(jù)類型
Match 表達(dá)式
類和對(duì)象 (三)
操作基本數(shù)據(jù)類型
for 表達(dá)式
組合和繼承–重載成員函數(shù)和方法
類和對(duì)象 (二)
組合和繼承–定義 factory 對(duì)象
組合和繼承–多態(tài)和動(dòng)態(tài)綁定
Trait 的基本概念
if 表達(dá)式
組合和繼承–抽象類
函數(shù)–函數(shù)字面量的一些簡化寫法
while 循環(huán)
組合和繼承–使用組合還是繼承?
訪問控制修飾符
Trait 示例–Rectangular 對(duì)象
組合和繼承–定義參數(shù)化成員變量
組合和繼承–定義無參數(shù)方法
類和對(duì)象 (一)
函數(shù)–閉包
函數(shù)–類成員函數(shù)
Scala 基本數(shù)據(jù)類型的實(shí)現(xiàn)方法
try 表達(dá)式處理異常
選擇瘦接口還是胖接口設(shè)計(jì)?
組合和繼承–小結(jié)
創(chuàng)建新的控制結(jié)構(gòu)
使用 import
為訪問控制修飾符添加作用域
Scala 的類層次關(guān)系
類和對(duì)象 (五)
傳名參數(shù)
柯里化函數(shù)
函數(shù)–頭等公民
組合和組合和繼承–定義 heighten 和 widen 函數(shù)
使用 Package–將代碼放入包中
隱含的 import
所有類的公共子類–底層類型
進(jìn)一步 Scala
函數(shù)–局部函數(shù)
引用包中的代碼
組合和繼承–使用 override 修飾符
組合和繼承–實(shí)現(xiàn)類 Element 的 above,beside 和 toString()方法
類和對(duì)象 (四)
函數(shù)–尾遞歸
沒有“break”和“continue”的日子
組合和繼承–調(diào)用基類構(gòu)造函數(shù)
減低代碼重復(fù)
函數(shù)–函數(shù)–可變參數(shù),命名參數(shù),缺省參數(shù)
起步 Scala
組合和繼承–擴(kuò)展類
函數(shù)–部分應(yīng)用的函數(shù)
開始神奇的 Scala編程之旅
組合和繼承–概述
Trait 用來實(shí)現(xiàn)可疊加的修改操作

if 表達(dá)式

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

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

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

if 表達(dá)式

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

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

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

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

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