pimp-my-library模式允许我通过提供从该类到实现该方法的类的隐式转换,似乎向类添加方法.
斯卡拉不允许两个这样的隐式转换正在发生,但是,我不能得到A到C使用隐含A于B和另一个隐含的B对C.有没有办法解决这个限制?
设T1, T2, T3三种类型。我们还定义了该类的两个给定实例Conversion,以便编译器可以从T1toT2和从T2to进行转换T3。
下面的代码可以正常编译:
type T1
type T2
type T3
given Conversion[T1, T2] with
override def apply(x: T1): T2 = ???
given Conversion[T2, T3] with
override def apply(x: T2): T3 = ???
val t1: T1 = ???
val t2: T2 = t1
val t3: T3 = t2
Run Code Online (Sandbox Code Playgroud)
但是当我们尝试从T1到 时会发生什么T3?编译器不会让我们:
val t3: T3 = t1
^^
Found: (t1: T1)
Required: T3
Run Code Online (Sandbox Code Playgroud)
我的问题:编译器无法本机(参见解决方法)链转换是否有特定原因?
我的解决方法 …