Scala 中的模式匹配。当参数表现出多态性或者是子类时的行为是什么:

普拉纳夫·库马尔

我是 Scala 的新手,我对 Java 有一些经验。在他们网站的模式匹配部分,他们提到当一个参数传递给一个函数时,可以根据参数的引用类型来实现不同的逻辑。如果是这样,那么当将扩展许多类和接口的参数传递给包含它实现的所有这些类和接口的模式匹配时,行为会怎样?如果只实现了第一个类/接口,那么实现与它实现的所有类/接口相关的所有逻辑的解决方法是什么?

来自Scala网站的代码

链接到网站

蒂姆

您是正确的,一条match语句将只执行第一个case匹配语句,它不会检查或执行后面的匹配项(否则case _将始终执行)。

没有“变通办法”,因为这不是错误或限制,它是该语言的一个非常有用的功能。


听起来好像您有许多不同的traits,每个 s 都有不同的行为,并且您想要为所有特征执行该行为。

最好的方法是编写单独的函数来匹配每个特征(Sum Var等),并在Tree实例上一一调用它们您可以制作一系列这些并用于foldLeft依次应用它们中的每一个。由于您的derive函数返回一个新Tree实例,因此您需要明确要应用操作的顺序。

我仍然不清楚为什么您有一个同时代表 aVar和 a 的对象Const,所以我怀疑您的数据结构存在更深层次的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章