Как и было обещано на http://docs.scala-lang.org/overviews/core/value-classes.html, это работает:
class Wrapper(val self: Int) extends AnyVal {
def toHexString: String = java.lang.Integer.toHexString(self)
}
println(12.toHexString)
Но это не компилируется:
class Wrapper(val self: Int) extends AnyVal {
def whyNot: String = java.lang.Integer.toHexString(self)
}
println(12.whyNot)
Почему нет? Единственное, что я изменил, это название метода!
Вот сообщение об ошибке:
error: value whyNot is not a member of Int
println(12.whyNot)
^
Да, я перепроверил наличие символов Unicode внутри whyNot
.
class Wrapper { ... }
. Судя по всему, Scala вызывает встроенный классRichInt
, но игнорирует мой классWrapper
. - person Ben Kovitz   schedule 25.01.2015