「大數據」(八十七)Scala之控制器和函數

【導讀:數據是二十一世紀的石油,蘊含巨大價值,這是·情報通·大數據技術系列第[87]篇文章,歡迎閱讀和收藏】

1 基本概念

和其它語言(比如 Java , C#) 相比, Scala 只內置了為數不多的幾種程序控制語句: if , while , for , try match 以及函數調用,這是因為從 Scala 誕生開始就包含了函數字面量, Scala 內核沒有定義過多的控制結構,而是可以通過額外的庫來擴展程序的控制結構。 Scala 的所有控制結構都有返回結果,如果你使用過 Java 或 C# ,就可能瞭解 Java 提供的三元運算符 ?: ,它的基本功能和 if 一樣,當可以返回結果。 Scala 在此基礎上所有控制結構( while , try , if ,等)都可以返回結果。

「大數據」(八十七)Scala之控制器和函數

當程序越來越大,你需要將代碼細化為小的容易管理的模塊。 Scala 支持多種方法來細化程序代碼,這些方法也為有經驗的程序員已經掌握的:使用函數,和 Java 相比, Scala 提供了多種 Java 不支持的方法來定義函數,除了類成員函數外, Scala 還支持嵌套函數,函數字面量,函數變量等。

2 術語解釋

頭等公民: Scala 中函數為頭等公民,你不僅可以定義一個函數然後調用它,而且你可以寫一個未命名的函數字面量,然後可以把它當成一個值傳遞到其它函數或是賦值給其它變量。

閉包: 閉包是一個函數,返回值依賴於聲明在函數外部的一個或多個變量。閉包通常來講可以簡單的認為是可以訪問一個函數里面局部變量的另外一個函數。

3 詳細說明

控制器:

Scala 只內置了為數不多的幾種程序控制語句: if , while , for , try match 以及函數調用,但“麻雀雖小,五臟俱全”,雖然少,但足夠滿足其他指令式語言(如 Java,C++ )所支持的程序控制功能,而且由於這些指令都有返回結果,可以使得代碼更為精簡。

3.1 SCALE IF…ELSE 語句

Scala IF...ELSE 語句是通過一條或多條語句的執行結果( True 或者 False )來決定執行的代碼塊。

語 法

if 語句的語法格式如下:

<code>if(布爾表達式)/<code>
<code>{/<code>
<code>   // 如果布爾表達式為 true 則執行該語句塊/<code>
<code>}/<code>

如果布爾表達式為 true 則執行大括號內的語句塊,否則跳過大括號內的語句塊,執行大括號之後的語句塊。

實 例

<code>object Test {/<code>
<code>   def main(args: Array[String]) {/<code>
<code>      var x = 10;/<code>
<code>
<code>      if( x < 20 ){/<code>
<code>         println("x < 20");/<code>
<code>      }/<code>
<code>   }/<code>
<code>}/<code>

3.2 SCALE 循環控制

循環語句允許我們多次執行一個語句或語句組

3.3 函數

Scala 有方法與函數,二者在語義上的區別很小。 Scala 方法是類的一部分,而函數是一個對象可以賦值給一個變量。換句話來說在類中定義的函數即是方法。 Scala 中的方法跟 Java 的類似,方法是組成類的一部分 ,Scala 中的函數則是一個完整的對象, Scala 中的函數其實就是繼承了 Trait 的類的對象。

Scala 中使用 val 語句可以定義函數, def 語句定義方法。

def functionName ([ 參數列表 ]) : [return type]

函數定義

函數定義由一個 def 關鍵字開始,緊接著是可選的參數列表,一個冒號 : 和方法的返回類型,一個等於號 = ,最後是方法的主體。


分享到:


相關文章: