为什么可以';从Scala2.9.0开始,是否从字节调用HexString方法?
表A2.8.1为什么可以';从Scala2.9.0开始,是否从字节调用HexString方法?,scala,implicit,implicit-conversion,Scala,Implicit,Implicit Conversion,表A2.8.1 scala> val a:Byte = 1 a: Byte = 1 scala> a.toHexString res0: String = 1 但是Scala2.9.0 scala> val a:Byte = 1 a: Byte = 1 scala> a.toHexString <console>:9: error: value toHexString is not a member of Byte a.toHexStri
scala> val a:Byte = 1
a: Byte = 1
scala> a.toHexString
res0: String = 1
但是Scala2.9.0
scala> val a:Byte = 1
a: Byte = 1
scala> a.toHexString
<console>:9: error: value toHexString is not a member of Byte
a.toHexString
^
scala>vala:Byte=1
a:字节=1
scala>a.toHexString
:9:错误:值toHexString不是字节的成员
a、 Tohextstring
^
自从Scala2.9.0以来,为什么不能从字节调用HexString方法?Scala2.9.0 如果方法
toHexString
未在Byte
中定义,编译器将尝试使用方法toHexString
搜索到类型的隐式转换,但这次没有运气,这就是编译错误的原因。实际上,IMHORichByte
应该定义一个toHexString
方法(RichInt
和RichLong
拥有它)
Scala 2.8.1
我使用Scala-Xprint:jvm
启动Scala,以查看编译器的功能:
scala> b.toHexString
// ... cutted the unimportant parts
scala.this.Predef.intWrapper(scala.this.Predef.byte2int(line4$object$$iw$$iw.b())).toHexString();
// ... cutted the unimportant parts
正如我们可以看到的,第一个隐式转换byte2int
应用,然后隐式转换intWrapper
应用并返回RichInt
的实例,其中定义了方法tohextstring
但目前我不知道为什么这两个隐式转换是链接的,因为实际上Scala不允许隐式转换的链接。。。任何人都可以点亮它?它可能已经在2.9中归档并修复,这就是它不再工作的原因。还是我错了?