gpt4 book ai didi

scala - 从 Scala2.9.0 开始,为什么不能从 Byte 调用 toHexString 方法?

转载 作者:行者123 更新时间:2023-12-01 02:48:39 26 4
gpt4 key购买 nike

Scala2.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.toHexString
^

从 Scala2.9.0 开始,为什么不能从 Byte 调用 toHexString 方法?

最佳答案

斯卡拉 2.9.0

如果方法toHexString内部未定义 Byte编译器尝试使用方法 toHexString 搜索到类型的隐式转换。但这一次它没有运气,这就是编译错误的原因。其实恕我直言RichByte应该定义一个 toHexString方法( RichIntRichLong 有)。

斯卡拉 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 的实例其中方法 toHexString被定义为。

但是目前我不知道为什么将这两个隐式转换链接起来,因为实际上Scala不允许隐式转换链接......任何人都可以点亮它?

关于scala - 从 Scala2.9.0 开始,为什么不能从 Byte 调用 toHexString 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6288412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com