Scala语言的理解
示例
如果您有几个单子类型的对象,我们可以使用“用于理解”来实现值的组合:
for { x <- Option(1) y <- Option("b") z <- List(3, 4) } { //现在我们可以使用x,y,z变量 println(x, y, z) x //在这种情况下,最后一个表达式*不是*块的输出! } //此打印 // (1, "b", 3) // (1, "b", 4)
此块的返回类型为Unit。
如果对象具有相同的单子类型M(例如Option),则usingyield将返回类型为M而不是的对象Unit。
val a = for { x <- Option(1) y <- Option("b") } yield { //现在我们可以使用x,y变量 println(x, y) //输出在块的末尾是输出 (7 * x, y) } //此打印: // (1, "b") //val`a设置为: //a:选项[(Int,String)]=某((7,b))
请注意,在混合示例类型(和)混合的原始示例中,不能使用yield关键字。尝试这样做将产生编译时类型不匹配错误。OptionList