use*_*311 1 arrays scala pass-by-reference
在Scala中,数组总是通过引用传递,按名称调用,对吧?
所以,
def fun(ar: Array[Int]) = {}
Run Code Online (Sandbox Code Playgroud)
等于
def fun(ar: => Array[Int]) = {}
Run Code Online (Sandbox Code Playgroud)
谢谢.
在Scala中,数组总是通过引用传递,按名称调用,对吧?
在Scala中,就像Java,C,C++(默认情况下),C#(默认情况下),Smalltalk,Ruby,Python以及几乎所有其他面向对象语言一样,参数都是通过值传递的.
您可以显式声明一个by-name-parameter,然后(但只有这样)对应于该参数的参数将按名称传递.Scala 永远不会通过引用传递.
所以,
Run Code Online (Sandbox Code Playgroud)def fun(ar: Array[Int]) = {}等于
Run Code Online (Sandbox Code Playgroud)def fun(ar: => Array[Int]) = {}
不它不是.在第一种情况下,数组(或更确切地说是指向数组的指针)将按值传递,在第二种情况下按名称传递.在任何情况下都不会通过引用传递.
| 归档时间: |
|
| 查看次数: |
1052 次 |
| 最近记录: |