小编wla*_*031的帖子

在 Scala 3 中是否可以通过泛型类型进行模式匹配?

我试图将我的思想从 Java 背景(和一点 Scala 2)迁移到 Scala 3,并实现一种版本,PartialFunction.orElse但使用联合类型作为输入参数而不是交叉类型:

trait F[A, B] extends (A => B) {
  
  def orElse[A1, B1](other: F[A1, B1]): F[A | A1, B | B1] = {
    val self = this
    
    new F[A | A1, B | B1] {
      override def apply(v: A | A1): B | B1 = {
        helper(v)
      }
    
      transparent inline def helper(v: A | A1): Any = {
        inline v match {
          case _: A => self.apply(v.asInstanceOf[A])
          case _: A1 => other.apply(v.asInstanceOf[A1])
        } …
Run Code Online (Sandbox Code Playgroud)

generics scala pattern-matching scala-3

6
推荐指数
1
解决办法
59
查看次数

标签 统计

generics ×1

pattern-matching ×1

scala ×1

scala-3 ×1