运营商#::是什么意思?

时间:2012-11-15 22:14:11

标签: scala

我意识到这可能是一个简单的问题,但是'#::'在下面的代码行中实现了什么。这是一个特殊的缺点吗?

def from(n: Int): Stream[Int] = n #:: from(n + 1)

4 个答案:

答案 0 :(得分:11)

此运算符用于构造streams而不是列表。考虑使用简单缺点的相同代码片段:

def from(n: Int): List[Int] = n :: from(n + 1)

运行此方法将导致StackOverflowError。但是Stream[Int]尾部仅在需要时才会被懒惰地评估(并且已记住已计算的值)。

答案 1 :(得分:6)

它相当于列表的::,但与Streams

一起使用

也就是说,n成为<{1}}是

的流的

答案 2 :(得分:1)

这意味着要创建一个Stream对象。

与列表的cons相同 - 而不是始终创建列表的::#::始终会创建一个流。

答案 3 :(得分:0)

有些晚了,但有http://scalex.org/非常好的锁定这些东西(谷歌真是乱七八糟的非字母数字)!祝你好运!