2017-08-06 69 views
3

至少在我的腦海裏,我總是對函數的價值vs引用傳遞有個很好的想法。我正在通過斯卡拉,它似乎通過名稱調用的概念,是相關的,但它自己獨特的概念是否按名稱調用概念並通過引用傳遞獨立概念?

例如在C#中存在ref關鍵字,並在斯卡拉存在調用通過名稱=>運算符。

這是我的理解,ref關鍵字 - 大致至少 - 用於傳遞指向一段數據的指針,而不是數據本身。即與Integer數據類型一起使用時,如果修改函數內部的Integer,整數也將在被調用端受到影響。

手上名字的調用描述了一種評估策略,其中參數中的任何表達式將被延遲,直到表達式在函數內部使用。

我的理解是否正確?如果是這樣,這些概念有沒有相關的名稱,或者我沒有看到圖片的一部分?謝謝!

回答

1

是否按名稱調用概念和按引用傳遞單獨的概念?

是的。這些是不同的概念。當我們評估時,名稱約爲;通過參考是關於什麼我們通過。

按名稱調用表示函數參數在函數每次使用時都要求值,而不是在函數接收函數之前進行求值。

打電話值(又名傳值)指

  • 功能接收它之前,函數的參數進行評估,並
  • 「所得到的值被綁定到對應的變量的函數「。

呼叫通過引用(又名通過引用傳遞)表示該功能接收到「的隱式引用到一個變量...而不是它的值的副本」。

雖然名稱是一種非嚴格的評估策略,但按價值調用和按參考調用是兩種不同的嚴格(渴望)評估策略。

另請參見https://en.wikipedia.org/wiki/Evaluation_strategy