很可能我想做的事情无法完成,但希望类似的事情是可能的。
我想做的是在一个类的方法中有一个 match-case 语句A
,创建一个子类B
并保留所有未被我的子类覆盖的案例,以便case _
在子类的 final 之前所有超类的案例A
被尝试。
AFAIK 这远非可行(但如果有错请纠正我),但类似的事情也不是那么遥远。
一个可能的选择是在超类中拥有一个案例和函数的映射,并在每个子类中扩展该映射。案例应该是 type [T1] => Bool
,函数应该是 type [T1] => [T2]
,其中T2
是我们在子类中扩展的方法的返回类型。然后应该运行一个循环,直到一个 case 返回 true 并执行它的函数。
问题是我不确定如何定义这些情况([T1] => Bool
)。对它们中的每一个进行匹配可能是非常低效的。这也可能是非常不惯用的,并且实现这一点的其他一些方式可能是可取的。