scala求值策略

關於scala中求值策略的相關問題

Scala裏有兩種求職策略:

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

求職策略的例子

1 Call by value,先計算test(7,8),再計算 7*7,最後得49

 

2 Call by name,先計算test(3+4,8),再計算 (3+4)*(3+4),然後計算(7)*(3+4),再計算7*7,最後得49

 

 

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