官术网_书友最值得收藏!

第7章
內建的控制結構

Scala只有為數不多的幾個內建的控制結構。這些控制結構包括ifwhilefortrymatch和函數調用。Scala的內建控制結構之所以這么少,是因為它從一開始就引入了函數字面量。不同于在基礎語法中不斷地添加高級控制結構的這種做法,Scala將內建的控制結構歸口到類庫中(第9章將會展示具體做法)。本章主要介紹的就是這些內建的控制結構。

你會注意到一點,那就是Scala所有的控制結構都返回某種值作為結果。這是函數式編程語言采取的策略,程序被認為是用來計算出某個值的,因此程序的各個組成部分也應該計算出某個值。你也可以將這種方式看作在指令式編程語言中已經存在的那種趨勢的邏輯終局。在指令式編程語言中,函數調用可以返回某個值,即使被調用的函數在調用過程中更新了某個傳入的輸出變量,這套機制也是能正常運作的。除此之外,指令式編程語言通常都提供了三元操作符(如C、C++和Java的?:),其行為與if語句幾乎沒有差別,只是會返回某個值。Scala也采納了這樣的三元操作模型,不過把它稱作if表達式。換句話說,Scala的if表達式可以有返回值。更進一步地,Scala讓fortrymatch也都有了返回值。

程序員可以用這些返回值來簡化他們的代碼,就像他們能用函數的返回值來簡化他們的代碼一樣。缺少了這個機制,程序員必須創建臨時變量,并且這些臨時變量僅僅用來保持那些在控制結構內部計算出來的結果。去掉這些臨時變量不僅讓代碼變得更簡單,同時避免了很多由于在某個分支設置了變量而在另一個分支中忘記設置所帶來的bug

總體而言,Scala這些基礎的控制結構雖然看上去很簡潔,卻提供了本質上與指令式編程語言相同的功能。不僅如此,這些控制結構通過確保每段代碼都有返回值可以使你的代碼變得更短。為了向你展示這一點,我們將對Scala的每一個控制結構進行詳細的講解。

主站蜘蛛池模板: 萝北县| 芒康县| 盐津县| 五原县| 共和县| 盈江县| 葵青区| 浙江省| 涿州市| 将乐县| 东至县| 永德县| 临沧市| 尚义县| 额济纳旗| 昌吉市| 邹城市| 灵石县| 泊头市| 保德县| 德格县| 莱西市| 泰安市| 烟台市| 沾益县| 额尔古纳市| 佳木斯市| 游戏| 海安县| 江油市| 静安区| 阜阳市| 元氏县| 湘阴县| 漠河县| 招远市| 三江| 怀化市| 武川县| 高陵县| 松桃|