什么是{val x = a; b.:::(x)}在Scala中意味着什么?

时间:2015-10-01 20:35:37

标签: scala apache-spark

我是Scala的新手,正在学习一本关于它的书( Scala编程)。我真的迷路了,作者试图用下面的代码解释。任何人都可以更详细地解释一下吗?

{ val x = a; b.:::(x) }

2 个答案:

答案 0 :(得分:2)

:::是一个方法,它将列表作为参数添加到列表中

你可以将其视为

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?

答案 1 :(得分:-1)

假设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)