Scala基本函數與代碼塊、求值策略

Block

代碼塊用於用於組織多個表達式。

Block也是一個表達式,其最終的求得的值是最後一個表達式的值。

寫法1:
{exp1;exp2}   //全部表達式卸載一行上面,表達式之間用;分號隔開



寫法2:
{
exp1    //一個表達式一行
exp2    //末尾不寫分號
...
}

 

函數

def functionName( param:ParamType, param1:ParamType1....):returnType={

//function body :expressions

}

 

返回值自動命名爲res0,且類型時String類型的。這是標準寫Scala函數的方法;

個人覺得Scala和Shell語言還是很像的,有Shell基礎的人寫起來應該更加簡單一些。

 

 

函數也可以不表明返回值類型,Scala會自動識別函數的返回值類型

 

 

當函數{}內只有一個表達式的時候,可以省略{}。

{}之間的叫做代碼塊,而一個表達式也是一個代碼塊。

 

 

 

Scala函數的求值策略

Scala裏有兩種求值策略(Evaluation Strategy)

  • Call By Value --對函數的實參求值,且僅求值一次之後賦值給實參之後進行帶入;
  • Call By Name --函數實參每次在函數體內被用到是會被求值使用;

Scala通常使用Call By Value;

如果函數形象類型以 “ => “開頭那木會使用Call By Name;

def foo(x : Int) = x   //Call By Value

def foo(x : => Int) = x  //Call By Name

eg:

test1是Call By Value,在運算時:先運算 x = 3 + 4----->x = 7  ------>將x = 7 帶入函數中再運算;

test2 是Call By Name,在運算時:直接將x = (3 + 4)帶入函數中運算。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章