【发布时间】:2016-08-11 05:36:32
【问题描述】:
我是 Scala 新手,我对函数如何拼接在一起以及它们的返回类型感到困惑。考虑以下几点:
val nodes = List(0,1,2)
val links = List(List(1, 2), List(1, 0), List(1,3))
每个节点都有一个双向链接,如元组对“链接”中所述。我正在尝试构建一个地图,其中每个节点都指向它的邻居,例如
Map(0 -> List(1), 1 -> List(2, 0), 2 -> List(1) )
但是,我最初对如何编写代码的想法让我难以理解为什么它会返回一个空的 'List[Any]' 值。
nodes.foreach(z => (links.map { case List(a,b) => if(a == z) a else if (b == z) b }))
这样做的正确方法是什么?
【问题讨论】:
-
为什么不
1 -> List(0, 2, 3)?3不是邻居吗?为什么3 -> List(1)不在那里? -
对的符号是
val links = List(1 -> 2, 1 -> 0)或parens(1,2)等。 -
是的,正如@som-snytt 所说,您可能应该使用
Tuple2而不是List配对,因为我们知道配对总是包含2 个项目。在 Scala 中,要创建 Tuple2,您可以使用Tuple2(a, b)、(a, b)或a -> b中的任何一个。 -
@jwvh,你说得对,应该是 1->List(2,0,3)
标签: scala