考虑文件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.我代表你提出了这个问题.