Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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
在Scala中无法理解的结果_Scala_Functional Programming_Pattern Matching_For Comprehension_Partialfunction - Fatal编程技术网

在Scala中无法理解的结果

在Scala中无法理解的结果,scala,functional-programming,pattern-matching,for-comprehension,partialfunction,Scala,Functional Programming,Pattern Matching,For Comprehension,Partialfunction,我理解为表达式被翻译成map和flatMap。但是我发现了一些我无法解释的事情,需要你的帮助。以下是两个玩具示例: for { None <- List(Option(1),None) } yield 0 //res0: List[Int] = List(0, 0) Q2:此映射表达式的错误是预期的,而第一个问题中的for表达式没有给出此错误。为什么计算结果不同?这两种方法返回相同的结果 for(None <- List(Some(1), None) ) yield No

我理解为表达式被翻译成map和flatMap。但是我发现了一些我无法解释的事情,需要你的帮助。以下是两个玩具示例:

for {
    None <- List(Option(1),None)
} yield 0

//res0: List[Int] = List(0, 0)

Q2:此映射表达式的错误是预期的,而第一个问题中的for表达式没有给出此错误。为什么计算结果不同?

这两种方法返回相同的结果

for(None <- List(Some(1), None) ) yield None
for(x <- List(Some(1), None) ) yield x

for(None这似乎是Scala编译器中的一个bug。状态为:“在第一步中,每个生成器
p false}
”,然后是“a用于理解
(pe′}


这意味着你的例子,
for{None for(None for)(我一直在想同样的问题:掩蔽问题。我从来没有见过理解用询问者使用它的方式…非常奇怪,或者这有点普遍吗?不,它不是可变的。在IDE(IntelliJ工作表)中),它确实链接到
Option
类型的
None
对象。它是一种模式匹配。
for(None <- List(Some(1), None) ) yield None
for(x <- List(Some(1), None) ) yield x
List(Option(1),None).withFilter { case None => true; case _ => false }.map{case None => 0}