4
がファイルbug.scala考えてみましょパラメータ:奇妙な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
}
それは暗黙の型変換を定義し、輸入して、3つのわずかに異なるシナリオでそれを使用しています。それをコンパイルします。
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を使用)