Учитывая эти определения:
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]]
?