是通过名称调用的概念和通过引用分开的概念?

时间:2017-08-06 23:04:43

标签: c# scala evaluation

至少在我的脑海里,我总是对功能方面的价值与参考传递有很好的了解。我现在正在浏览Scala,看起来它的名称调用概念是相关的,但它有自己独特的概念

例如在C#中存在ref关键字,而在Scala中存在名称=>的调用。操作

我的理解是ref关键字 - 大致至少 - 用于传递指向一段数据的指针,而不是传递给那条数据本身。即,当与Integer数据类型一起使用时,如果修改函数内部的Integer,则Integer也会在被调用者方面受到影响。

手上的名称调用描述了一种评估策略,其中参数中的任何表达式都将被延迟,直到在函数内部使用表达式。

我的理解是否正确?如果是这样,这些概念是否恰好具有相关名称,或者我没有看到图片的一部分?谢谢!

1 个答案:

答案 0 :(得分:1)

  

是否按名称调用概念并通过引用传递单独的概念?

是。这些是不同的概念。当我们评估时,按名称呼叫是关于的;传递参考是关于我们传递的

按名称调用表示每次函数使用时都会计算函数参数,而不是在函数接收函数之前。

按值调用(也称为按值传递)表示

  • 函数参数在函数接收之前进行评估,并且
  • "结果值绑定到函数中的相应变量。"

按引用调用(也称为引用传递)表示函数接收对变量的隐式引用...而不是其值的副本。"

虽然按名称呼叫是一种非严格的评估策略,但按价值呼叫和按引用呼叫是两种不同的严格(急切)评估策略。

另见https://en.wikipedia.org/wiki/Evaluation_strategy