pimp-my-library模式允许我通过提供从该类到实现该方法的类的隐式转换,似乎向类添加方法.
斯卡拉不允许两个这样的隐式转换正在发生,但是,我不能得到A到C使用隐含A于B和另一个隐含的B对C.有没有办法解决这个限制?
我最近正好遇到术语"弱一致性"(在堆栈溢出用户返璞词的答案,如何设置隐式转换允许数值类型之间的算术?).
它是什么?
我已经编写了一些隐式代码,如下所示,我想知道为什么i2d不调用函数隐式对话.
object Test {
implicit def i2d(x: Int): Double = {
println("foo")
x.toDouble
}
implicit def d2i(x: Double): Int = {
x.toInt
}
val x: Int = 10
val y: Double = x
val z: Int = 3.5
}
Run Code Online (Sandbox Code Playgroud)
该输出的scalac -Xprint:typer Test.scala
// Test.scala
[[syntax trees at end of typer]]
package <empty> {
object Test extends scala.AnyRef {
def <init>(): Test.type = {
Test.super.<init>();
()
};
implicit def i2d(x: Int): Double = {
scala.this.Predef.println("foo");
x.toDouble …Run Code Online (Sandbox Code Playgroud)