2011-10-02 68 views
7

我想创建Scala中的一个队列中创建队列:做斯卡拉

import scala.collection.immutable.Queue 

val empty = new Queue[Int] 

但是我得到一个错误,指出队列构造函数是受保护的。如果是这种情况,我错过了什么?所有的Queue方法似乎都已经定义和工作。我是否真的必须真正扩展Queue类才能使用Queue?

回答

15

空队列使用伴侣对象:

val empty = Queue.empty[Int] 
+0

啊,谢谢。希望这个答案会出现在谷歌的文章中使用'new' .. – providence

+1

或'Queue [Int]()'。如果表达式的上下文(更确切地说,* Expected Type *)使编译器清楚您正在收集'Int'集合后,则可以省略type参数'val x:Queue [Int] = Queue()'。 – retronym

+0

@retronym它正在使用由于受保护的构造函数而不工作的Queue [Int]()。使用Scala 2.9.1.final。 – providence

3

使用的工厂之一:

scala.collection.immutable.Queue() 
scala.collection.immutable.Queue.empty 

需要注意的是不可变的队列共变的,所以你通常不需要定义键入它。一个例外是var声明。

0
scala> val empty = Queue [Int]() 
empty: scala.collection.immutable.Queue[Int] = Queue()