Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java scala中的模式匹配。当一个参数显示为polymorhism或是一个子类时,行为是什么:_Java_Scala_Inheritance_Polymorphism_Pattern Matching - Fatal编程技术网

Java scala中的模式匹配。当一个参数显示为polymorhism或是一个子类时,行为是什么:

Java scala中的模式匹配。当一个参数显示为polymorhism或是一个子类时,行为是什么:,java,scala,inheritance,polymorphism,pattern-matching,Java,Scala,Inheritance,Polymorphism,Pattern Matching,我是scala新手,对java有点经验。在他们网站的模式匹配部分,他们提到当一个参数被传递给一个函数时,可以根据参数的引用类型实现不同的逻辑。如果是这样的话,那么当一个扩展了许多类和接口的参数被传递到包含它所实现的所有这些类和接口的模式匹配时,会发生什么行为? 如果只实现了第一个类/接口,那么实现与其实现的所有类/接口相关的所有逻辑的变通方法是什么 .正确的是,match语句将只执行匹配的第一个case,它不会检查或执行以后的匹配(否则将始终执行case) 没有“变通”,因为这不是一个bug或

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


.

正确的是,
match
语句将只执行匹配的第一个
case
,它不会检查或执行以后的匹配(否则将始终执行
case

没有“变通”,因为这不是一个bug或限制,它是语言的一个非常有用的特性


听起来好像你有很多不同的
trait
s,每个都有不同的行为,你想为所有的trait执行这些行为

最好的方法是编写单独的函数来匹配每个特征(
Sum
Var
等),并在
实例上逐个调用它们。您可以对这些文件进行排序,然后使用
foldLeft
依次应用它们。由于您的
派生
函数返回一个新的
实例,因此您需要弄清楚要应用操作的顺序


我仍然不清楚为什么只有一个对象同时表示
Var
Const
,因此我怀疑您的数据结构存在更深层次的问题

你问题的前半部分自己回答。关于“变通方法”的后半部分还不清楚:如果你想做多件事,去做多件事,你甚至不需要分号,只需要在完成之前一直附加语句。我不确定代码的图像应该代表什么。而且这里真的需要
java
标记吗?我添加了java标记,因为我非常了解这种语言,如果需要,任何人都可以从中进行类比,仅此而已:)无论如何,感谢您的帮助哦,代码是在他们的网站的模式匹配部分给出的,我也无法理解,所以我发布了它……)因此,模式匹配就像(Java的)switch语句,在该语句中,cases只查找参数是否是某个类的实例,并相应地执行逻辑。谢谢你的帮助