【发布时间】:2014-05-22 09:43:30
【问题描述】:
鉴于这些定义:
val guys = List("Albert", "Tom")
val girls = List("Mary", "Stacy", "Josie")
val optRoom: Option[String] = Some("Room 303")
这对我来说是预期的List[String]:
for {
guy <- guys
girl <- girls
room <- optRoom
} yield {
s"$guy dances with $girl in $room"
}
在循环内部稍微转一下,我希望这会评估为 Option[List[String]],但它甚至无法编译:
for {
room <- optRoom
guy <- guys
girl <- girls
} yield {
s"$guy dances with $girl in $room"
}
为什么不呢?我错过了什么? (我知道我可以将optRoot 转换为序列/列表/可迭代,但这不是我想要的)
我应该如何重写我的代码以获得Option[List[String]]?
【问题讨论】:
标签: scala for-loop monads scala-collections optional