两个绑定变量类型上的Scala模式匹配

两个绑定变量类型上的Scala模式匹配,scala,Scala,我有两个未知类型的变量。我想对变量类型的组合进行模式匹配,然后在此基础上采取行动——具体来说,我想实现Comparator[Any],并根据它们的类型比较这两个变量。此代码生成所需的结果: class SomethingComparator扩展了util.Comparator[Any]{ 覆盖定义比较(o1:Any,o2:Any)=列表(o1,o2).map(u.isInstanceOf[Something])匹配{ 案例列表(true,true)=>o1.asInstanceOf[Someth

我有两个未知类型的变量。我想对变量类型的组合进行模式匹配,然后在此基础上采取行动——具体来说,我想实现
Comparator[Any]
,并根据它们的类型比较这两个变量。此代码生成所需的结果:

class SomethingComparator扩展了util.Comparator[Any]{
覆盖定义比较(o1:Any,o2:Any)=列表(o1,o2).map(u.isInstanceOf[Something])匹配{
案例列表(true,true)=>o1.asInstanceOf[Something].someInt.compareTo(o2.asInstanceOf[Something].someInt)
案例列表(真、假)=>-1
案例列表(假、真)=>1
大小写=>0
}
}
有没有一种方法可以避免直接在类型上进行
map
调用和模式匹配,从而避免在第一次匹配中执行两次
as
调用

class SomethingComparator扩展了util.Comparator[Any]{
覆盖def比较(o1:Any,o2:Any)=(o1,o2)匹配{
案例(o1:Something,o2:Something)=>o1.someInt.compareTo(o2.someInt)
案例(o1:Something,o2:Any)=>-1
案例(o1:Any,o2:Something)=>1
大小写=>0
}
}

由于第二个和第三个
案例
相同,因此出现“无法访问代码”错误。
案例
中的
o1
o2
受匹配约束,因此它们被视为新变量,与旧的
o1
o2
不同。Thx,刚刚计算出:)