我是 Scala 的新手,我对 Java 有一些经验。在他们网站的模式匹配部分,他们提到当一个参数传递给一个函数时,可以根据参数的引用类型来实现不同的逻辑。如果是这样,那么当将扩展许多类和接口的参数传递给包含它实现的所有这些类和接口的模式匹配时,行为会怎样?如果只实现了第一个类/接口,那么实现与它实现的所有类/接口相关的所有逻辑的解决方法是什么?
您是正确的,一条match
语句将只执行第一个case
匹配的语句,它不会检查或执行后面的匹配项(否则case _
将始终执行)。
没有“变通办法”,因为这不是错误或限制,它是该语言的一个非常有用的功能。
听起来好像您有许多不同的trait
s,每个 s 都有不同的行为,并且您想要为所有特征执行该行为。
最好的方法是编写单独的函数来匹配每个特征(Sum
Var
等),并在Tree
实例上一一调用它们。您可以制作一系列这些并用于foldLeft
依次应用它们中的每一个。由于您的derive
函数返回一个新Tree
实例,因此您需要明确要应用操作的顺序。
我仍然不清楚为什么您有一个同时代表 aVar
和 a 的对象Const
,所以我怀疑您的数据结构存在更深层次的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句