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)帶入函數中運算。