在Scala3中,有没有办法在一个区域中禁用-language:strictEquality(多元平等)?

想要这样做的特殊原因是仍然能够对来自超类的值使用模式匹配。例如,我希望case None在查看 type 的值时能够匹配Option[Throwable],但这似乎不可能,因为Throwable不可能,而且(我想)永远不会有CanEqual实例。

回答

尝试像这样限制给定的范围

  val x: Option[Throwable] = None
  {
    given CanEqual[Option[Throwable], Option[Throwable]] = CanEqual.derived
    x match {
      case Some(v) => v
      case None => new Throwable()
    }
  } // after this brace CanEqual given is out-of-scope

  x match {
    case Some(v) => v
    case None => new Throwable()
  } // compile-time error: Values of types object None and Option[Throwable] cannot be compared with == or !=


以上是在Scala3中,有没有办法在一个区域中禁用-language:strictEquality(多元平等)?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>