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

奇怪的Scala错误与默认构造函数参数的隐式转换有关,scala,Scala,考虑文件bug.scala: 它定义了一个隐式转换,导入它,并在三个稍有不同的场景中使用它。编译它: 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 隐式转换在用于默认构造函数参数时似乎

考虑文件bug.scala:

它定义了一个隐式转换,导入它,并在三个稍有不同的场景中使用它。编译它:

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) 编译器中有一个bug。有人能证实是后者吗


(使用Scala 2.8.1。)

肯定是个bug。我是代表你提出的

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
}