gpt4 book ai didi

scala - 如何使用 Scala 2.10 隐式类

转载 作者:行者123 更新时间:2023-12-03 23:24:46 26 4
gpt4 key购买 nike

我认为这将是 Scala 2.10 新隐式类的正确用法:

implicit case class IntOps(i: Int) extends AnyVal {
def twice = i * 2
}

11.twice

显然不是:
<console>:13: error: value twice is not a member of Int
11.twice
^

我错过了什么(Scala 2.10.0-M6)?

最佳答案

一个线索是隐式类的脱糖,在 the SIP-13 中有解释。 :

implicit class RichInt(n: Int) extends Ordered[Int] {
def min(m: Int): Int = if (n <= m) n else m
...
}

将被编译器转换如下:
class RichInt(n: Int) extends Ordered[Int] {
def min(m: Int): Int = if (n <= m) n else m
...
}
implicit final def RichInt(n: Int): RichInt = new RichInt(n)

如您所见,创建的隐式函数与原始类具有相同的名称。我想这样做是为了使隐式类更容易导入。

因此,在您的情况下,当您创建隐式 时案例类, implicit创建的方法名有冲突关键字和由 case 创建的伴随对象关键词。

关于scala - 如何使用 Scala 2.10 隐式类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11931623/

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