【发布时间】:2015-03-29 17:03:58
【问题描述】:
元组和产量:非常常见的构造。但令我惊讶的是,以下将它们组合在一起的方法并不那么明显:
val edges = ((1,2),(2,3),(3,4),(4,5),(1,6),(3,8),(4,9),(5,10),
(1,7),(4,10))
val edgesw = for (e <- edges) yield (e._1, e._2, 1.0)
// e is interpreted as "any"
// therefore e._1 and e._2 are invalid / do not compile
更新
添加类型参数似乎有帮助.. 但为什么需要它?
val edgesw = for (e: (Int, Int) <- edges) yield (e._1, e._2, 1.0)
另一个更新我忽略了 Seq / Array 符号!
val edges = Seq((1,2),(2,3),(3,4),(4,5),(1,6),(3,8),(4,9),(5,10),
(1,7),(4,10))
现在行为符合预期:
val edgesw = for (e <- edges) yield (e._1, e._2, 1.0)
edgesw: Seq[(Int, Int, Double)] = List((1,2,1.0), (2,3,1.0), (3,4,1.0), (4,5,1.0), (1,6,1.0), (3,8,1.0), (4,9,1.0), (5,10,1.0), (1,7,1.0), (4,10,1.0))
【问题讨论】:
-
@enzyme 哦!现在已经晚了。我忘记了前面的 Seq 或 Array!是的,有趣的是,这完全有效! OP 已更新以在前面显示 Seq。