以下のコード例で、isAList
のfor
内包では List が生成されるのに、他の 2 つの内包では Maps が生成されるのはなぜですか? 理由は思いつきません - 唯一の違いは、isAList
の内包が 2 つの変数を宣言し、他のものは 1 つまたは 0 を宣言することです。
object Weird {
def theMap: Map[Int, String] =
Map(1 -> "uno", 2 -> "dos", 3 -> "tres")
def main(args: Array[String]) {
val isAMap = for {
(key, value) <- theMap
} yield (key*2 -> value*2)
val isAlsoAMap = for {
(key, value) <- theMap
doubleKey = key*2
} yield (doubleKey -> value*2)
val isAList = for {
(key, value) <- theMap
doubleKey = key*2
doubleValue = value*2
} yield (doubleKey -> doubleValue)
println(isAMap)
println(isAlsoAMap)
println(isAList)
}
}
出力
Map(2 -> unouno, 4 -> dosdos, 6 -> trestres)
Map(2 -> unouno, 4 -> dosdos, 6 -> trestres)
List((2,unouno), (4,dosdos), (6,trestres))
私は Scala に比較的慣れていないので、何かについて信じられないほどナイーブである場合は申し訳ありません。