gpt4 book ai didi

scala - 与默认构造函数参数的隐式转换相关的奇怪 Scala 错误

转载 作者:行者123 更新时间:2023-12-01 04:14:07 24 4
gpt4 key购买 nike

考虑文件 bug.scala:

package sandbox

object Foo {
implicit def stringToInt(s: String) = 5
}

import Foo._

class Boo(val a: Int = "foo" / 3) {
val b: Int = "foo" / 3
def c(d: Int = "foo" / 3) = d
}

它定义了一个隐式转换,导入它,并在三个稍微不同的场景中使用它。编译它:
E:\prog\scala\test>scalac bug.scala
bug.scala:9: error: value / is not a member of java.lang.String
class Boo(val a: Int = "foo" / 3) {
^
one error found

当用于默认构造函数参数时,隐式转换似乎不起作用,但适用于其他场景。

现在看这个:
package sandbox

object Foo {
implicit def stringToInt(s: String) = 5
}

object dummy

import Foo._
import dummy._

class Boo(val a: Int = "foo" / 3) {
val b: Int = "foo" / 3
def c(d: Int = "foo" / 3) = d
}

我们只是添加了一个空对象并导入了它。现在文件编译没有错误!

我在这里看到两种可能性:1)我的头在搞乱我。 2) 编译器有问题。谁能确认是后者?

(使用 Scala 2.8.1。)

最佳答案

绝对是个bug。我已经代表你提交了。

https://issues.scala-lang.org/browse/SI-4141

关于scala - 与默认构造函数参数的隐式转换相关的奇怪 Scala 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4640634/

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