加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala – 模式匹配相关类型的元组

发布时间:2020-12-16 09:33:20 所属栏目:安全 来源:网络整理
导读:我有以下类层次结构: class Aclass B extends Aclass C extends A 那么还有另一个类,它接受这些类的实例,并且有一种方法,其中两种情况的模式匹配是可能的,如下所示: class D (one: A,two: A) { def work { (one,two) match { case (o,t): (B,B) = ...
我有以下类层次结构:

class A
class B extends A
class C extends A

那么还有另一个类,它接受这些类的实例,并且有一种方法,其中两种情况的模式匹配是可能的,如下所示:

class D (one: A,two: A) {

  def work {
    (one,two) match {
      case (o,t): (B,B) => ... blablabla
      case (o,C) => ... blablabla
      case _ =>
    }
  }
}

然而,当它应该解决匹配的时候有利于第二种情况(B,C),它会尝试将其解析为(B,B),并提出C不能被转换为B的类转换异常。为什么?该怎么办?我该怎么来呢?

解决方法

你的语法不是很正确(不编译)。

尽管如此,

object Matcher extends App {

  class A
  class B extends A
  class C extends A

  class D(one: A,two: A) {

    def work {
      (one,two) match {
        case (o: B,t: B) => println("B")
        case (o: B,t: C) => println("C")
        case _ =>
      }
    }
  }

  val d1 = new D(new B,new B)
  val d2 = new D(new B,new C)

  d1.work
  //B
  d2.work
  //C
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读