相关疑难解决方法(0)

如何在Scala中链接implicits?

pimp-my-library模式允许我通过提供从该类到实现该方法的类的隐式转换,似乎向类添加方法.

斯卡拉不允许两个这样的隐式转换正在发生,但是,我不能得到AC使用隐含AB和另一个隐含的BC.有没有办法解决这个限制?

scala implicit-conversion implicits

76
推荐指数
2
解决办法
7593
查看次数

为什么编译器不能链式转换?

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)

我的问题:编译器无法本机(参见解决方法)链转换是否有特定原因?

我的解决方法 …

scala implicit type-conversion scala-3 given

0
推荐指数
1
解决办法
52
查看次数