【发布时间】:2015-12-30 00:41:34
【问题描述】:
我是 Scala 的新手,正在研究一本关于它的书(Scala 编程)。我真的很迷茫,作者试图用下面的代码解释什么。谁能详细解释一下?
{ val x = a; b.:::(x) }
【问题讨论】:
标签: scala apache-spark
我是 Scala 的新手,正在研究一本关于它的书(Scala 编程)。我真的很迷茫,作者试图用下面的代码解释什么。谁能详细解释一下?
{ val x = a; b.:::(x) }
【问题讨论】:
标签: scala apache-spark
::: 是一种将作为参数给定的列表添加到调用它的列表的方法
你可以这样看
val a = List(1, 2)
val b = List(3, 4)
val x = a
b.prependList(x)
但实际上对于单参数方法,如果它不是模棱两可的,那么 scala 允许跳过括号和点,这就是该方法应该如何用于不难看
x ::: b
它只会加入这两个列表,但这里有一些技巧
如果方法名以 : 结尾,则以另一种方式绑定
所以输入x ::: b 就像这种类型的事情完成了(x):::.b。你显然不能在 scala 中这样输入它,不会编译,但这就是发生的事情。感谢x 位于运算符的左侧,它的元素将位于此调用结果列表的左侧(开始)。
哦,好吧,现在我可能为您找到了更多解释,以及您发布的同一段代码,以回答这个问题:What good are right-associative methods in Scala?
【讨论】:
:: 仅添加一个元素,因此如果您将列表作为元素添加到另一个列表,您将拥有List[Any] = List(List(1, 2, 3), 4, 5, 6)
假设 a 和 b 是列表:它将 a 分配给 x,然后返回列表 b 前面加上列表 x。
例如,如果val a = List(1,2,3) 和val b = List(4,5,6) 则返回List(1,2,3,4,5,6)。
【讨论】:
List上的一个方法。 Stream 方法是 #:::。