roy*_*yco 20 scala calling-convention evaluation-strategy
我知道Scala支持来自ALGOL的call-by-name,我想我明白这意味着什么,但Scala可以像C#,VB.NET和C++那样通过引用进行调用吗?我知道Java不能通过引用进行调用,但我不确定这种限制是否仅仅是由于语言还是JVM.
当您想要将大量数据结构传递给方法但是您不想复制它时,这将非常有用.在这种情况下,按引用调用似乎是完美的.
Rex*_*err 46
Java和Scala都只使用值调用,除了该值是基元或指向对象的指针.如果你的对象包含可变字段,那么这与通过引用调用之间几乎没有实质性区别.
由于您总是将指针传递给对象而不是对象本身,因此您不必重复复制巨型对象.
顺便提一下,Scala的名称调用是使用call by value实现的,值是一个(指向a)指针的函数对象,它返回表达式的结果.