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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |