scala Stream中的#::运算符是什么?

时间:2012-11-23 17:38:20

标签: scala

  

可能重复:
  Searching the Scala documentation for #::

我正在查看Stream

的文档

过滤方法有以下代码:

def naturalsFrom(i: Int): Stream[Int] = i #:: naturalsFrom(i + 1)
naturalsFrom(1)  10 } filter { _ % 5 == 0 } take 10 mkString(", ")

什么是#::运算符?这是否映射到某个函数调用?

2 个答案:

答案 0 :(得分:10)

x #:: xs

返回

Stream.cons(x, xs)

返回元素x的Stream,后跟Stream xs。

答案 1 :(得分:8)

正如SHildebrandt所说,#::是Streams的使用者。

换句话说,#::是将:: is to to Lists

val x = Stream(1,2,3,4)                   //> x  : scala.collection.immutable.Stream[Int] = Stream(1, ?)
10#::x                                    //> res0: scala.collection.immutable.Stream[Int] = Stream(10, ?)

val y = List(1,2,3,4)                     //> y  : List[Int] = List(1, 2, 3, 4)
10::y                                     //> res1: List[Int] = List(10, 1, 2, 3, 4)