【发布时间】:2018-08-28 02:13:04
【问题描述】:
如果我们按照“Scala 编程”一书中的定义:
当您在一个或多个值周围应用括号时 变量,Scala 会将代码转换为方法的调用 在该变量上命名应用
那么访问数组的元素呢?例如:x(0) 转换为 x.apply(0) ? (假设x 是一个数组)。我试图执行上面的行。它正在抛出错误。我还尝试了 x.get(0),它也抛出了错误。
有人可以帮忙吗?
【问题讨论】:
-
您遇到了什么错误?编译或运行时错误?如果你只做 x(0),它会起作用吗? x.apply(0) 是访问数组的正确方法,尽管通常您会使用 x(0) 语法而不是显式写出 apply。
-
x(0)与x.apply(0)相同,应该适用于Array。你得到了什么错误?Array没有get()方法。地图和选项有get()方法。 -
对不起,虽然我打算问如下问题.. 我正在运行我的程序如下.. scala> val x = Array(1,2,3) x: Array[Int] = Array(1, 2, 3) scala> x(1)=200 scala> x.apply(1)=200
:13: 错误:在类数组中应用方法缺少参数列表未应用的方法仅转换为函数当需要函数类型时。您可以通过编写 apply _或apply(_)而不是apply来明确此转换。 x.apply(1)=200 ^ -
上面,当我用 x.apply() 替换 x(1) 时,它会抛出错误。我无法在评论部分编辑代码。
-
“它抛出错误”不是一个足够精确的错误描述,我们无法帮助您。 什么不起作用? 如何不起作用?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?