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