ful*_*ead 4 arrays scala compilation
嘿,我有以下代码:
var z:Array[String] = new Array[String](4);
z(0) = "Dave";
z(1) = "Joe";
z(2) = "Jim";
z.apply(3) = "Roger";
Run Code Online (Sandbox Code Playgroud)
这里的最后一行是给出一个编译时错误说 - "类Array中缺少方法的参数;如果要将它作为部分应用的函数处理,请使用`_'跟随此方法"
这对我来说没有意义,因为我已经读过,当你将一个或多个值的括号应用于变量时,Scala会将代码转换为对该变量名为apply的方法的调用.所以,如果以下行:
z(2) = "Jim";
Run Code Online (Sandbox Code Playgroud)
转换为
z.apply(2) = "Jim";
Run Code Online (Sandbox Code Playgroud)
然后为什么行
z.apply(3) = "Roger";
Run Code Online (Sandbox Code Playgroud)
给我一个编译时错误?
我是Scala的新手,所以任何帮助都会非常感谢!
这个电话:
z(2) = "Jim";
Run Code Online (Sandbox Code Playgroud)
获取翻译为
z.update(2, "Jim")
Run Code Online (Sandbox Code Playgroud)
apply 尝试分配值时不起作用.
更新
你可以自己检查一下.在控制台中运行:scala -print,然后键入val ar = Array(1, 2, 3)
然后,当您键入下一行时ar(2) = 5,它将显示生成的代码.它有点复杂(解释器为了它自己的目的添加了很多东西),但你可以找到这个(或类似的)行:
$line3.iw.ar().update(2, 5);
Run Code Online (Sandbox Code Playgroud)