gpt4 book ai didi

scala - 诊断 Scala 编译错误 "value to is not a member of Int"

转载 作者:行者123 更新时间:2023-12-02 01:09:59 25 4
gpt4 key购买 nike

我在一个运行良好的 Scala 类中进行了代码更改。在尝试编译修改时,编译器吐出错误消息,与此(预先存在的)代码行相关的“value to is not member of Int”:

for (i <- 0 to cColumn -1) { ... }

在做一些研究时,我发现了一些关于“to”方法的错误报告——而且“to”显然是 intWrapper 类中提供的一种方法(?)。

因此,基于该信息,我开始查看类(class)的导入语句……intWrapper 没有此类导入。 (问:既然如此,这首先是如何编译/运行的?)让这对我来说更有趣的是,当我开始在代码库中为该导入进行全局搜索时,我不小心终止了编译器(sbt) session ...但是当我重新启动它时,该类编译得很好。完全没有错误。 (并且与上一节相比没有代码更改)

任何人都知道什么会导致这种间歇性行为?

注意事项:
1) 使用 Scala 2.10.2 和 javac 1.7.0_25
2) 类的代码更改与示例功能无关,也没有改变类的任何导入

更新:以下是变量声明:

val meta = rs.getMetaData()
val cColumn = meta.getColumnCount()

编辑:根据建议,这里是测试行(现在所有这些都可以正常编译):

implicitly[scala.Int => scala.runtime.RichInt]
intWrapper(3) to 4
for (i <- 0 to 33 -1) { /* do something smart */ }

for (i <- 0 to cColumn -1) { ... }

EDIT 2 这是完整的编译器错误:

[error] /path/to/src/file/DBO.scala:329: value to is not a member of Int
[error] for (i <- 0 to cColumn -1) {
[error]

该错误在类里面重复了约 18 次。 (是DBO-DB接口(interface)层);其中 DBO.scala 是包含新修改的特征的文件。

最佳答案

我刚遇到同样的问题。在我的例子中,它是由不必要的 import 引起的,如下所示:

import scala.Predef.String

class Test() {
for (t <- 1 to 3) {}
}

默认情况下,Scala 导入所有 scala.PredefPredef 扩展了 LowPriorityImplicits,其中包括从 IntRichInt 的隐式转换。

to 实际上是在 RichInt 上定义的,因此您需要这种转换才能使用它。通过仅导入 Predef 的一部分,我失去了这种转换。去掉不必要的 import 错误就消失了。

关于scala - 诊断 Scala 编译错误 "value to is not a member of Int",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com