加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

数组 – 在Scala中的apply()函数给出编译错误?

发布时间:2020-12-16 18:18:42 所属栏目:安全 来源:网络整理
导读:嘿,我有以下代码: var z:Array[String] = new Array[String](4);z(0) = "Dave"; z(1) = "Joe";z(2) = "Jim";z.apply(3) = "Roger"; 这里的最后一行是给出一个编译时错误说 – “类Array中缺少方法的参数;如果要将它作为部分应用的函数处理,请使用`_’跟随此
嘿,我有以下代码:

var z:Array[String] = new Array[String](4);
z(0) = "Dave"; 
z(1) = "Joe";
z(2) = "Jim";
z.apply(3) = "Roger";

这里的最后一行是给出一个编译时错误说 – “类Array中缺少方法的参数;如果要将它作为部分应用的函数处理,请使用`_’跟随此方法”

这对我来说没有意义,因为我已经读过,当你将一个或多个值的括号应用于变量时,Scala会将代码转换为对该变量名为apply的方法的调用.
所以,如果以下行:

z(2) = "Jim";

转换为

z.apply(2) = "Jim";

然后为什么行

z.apply(3) = "Roger";

给我一个编译时错误?

我是Scala的新手,所以任何帮助都会非常感谢!

解决方法

这个电话:

z(2) = "Jim";

获取翻译为

z.update(2,"Jim")

尝试分配值时,apply不起作用.

更新

你可以自己检查一下.在控制台中运行:scala -print,并键入val ar = Array(1,2,3)

然后,当您键入下一行ar(2)= 5时,它将显示生成的代码.它有点复杂(解释器为了它自己的目的添加了很多东西),但你可以找到这个(或类似的)行:

$line3.iw.ar().update(2,5);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读