【发布时间】:2021-12-16 05:03:10
【问题描述】:
我有一个不透明类型FancyDouble,它是通过在伴随对象范围内使用given Conversion[Double, FancyDouble] = FancyDouble(_) 从Double 隐式转换而来的。之后,构造val d: FancyDouble = 0.0 工作,但是当我尝试像if (d == 0.0) 那样进行比较时,编译器抱怨我无法比较FanceDouble 和Double(我希望它应该隐式转换0.0 字面量转换为 FancyDouble,就像之前的情况一样。
如何启用与隐式转换的比较?
【问题讨论】:
-
你能完整定义你的不透明类型和伴生对象吗?转换也需要 2 个类型参数
-
我无法重现您的错误。见这里scastie.scala-lang.org/erC4EXcuQUuHdmrAhgNBdA
-
有趣!谢谢,我会调查的。
-
@texasbruce 确实,它的工作原理是这样的(如果我在本地范围内定义 Decimal),但如果 Decimal 在同一个包中的单独文件中定义,它不会编译。我不明白...
标签: scala implicit-conversion scala-3