我在集合中有一系列用户
e,a
我想把它传递给Queue.enqueue方法:
val users: Seq[User]
我可以预先收集我的收藏品,但我相信有一种方法可以正确转换它吗?
另外,什么是A *再次调用?
答案 0 :(得分:4)
A*
是varargs类型。要将集合传递给此类函数,可以使用特殊的vararg-expansion语法,如下所示:
queue.enqueue(seq: _*) // If queue is of type Queue[User].
只有当您的收藏集是Seq
时,或者可以将其隐式转换为Seq
时,您才能使用此表示法。
答案 1 :(得分:2)
只要A
是类型参数并且与User
兼容(对于类型约束/方差):
enqueue(users: _*)
答案 2 :(得分:0)
如果队列是可变的,您可以使用其他答案所指出的enqueue
或使用++=
scala> val mQueue = scala.collection.mutable.Queue[Int](1, 2, 3, 4, 5)
mQueue: scala.collection.mutable.Queue[Int] = Queue(1, 2, 3, 4, 5)
scala> val aSeq = Seq[Int](6, 7, 8, 9, 10)
aSeq: Seq[Int] = List(6, 7, 8, 9, 10)
scala> mQueue ++= aSeq
res26: mQueue.type = Queue(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
如果队列是不可变的,则必须使用enqueue
,如下所示:
scala> val imQueue = scala.collection.immutable.Queue[Int](1, 2, 3, 4, 5)
imQueue: scala.collection.immutable.Queue[Int] = Queue(1, 2, 3, 4, 5)
scala> imQueue.enqueue(aSeq.toList)
res32: scala.collection.immutable.Queue[Int] = Queue(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
如果是不可变的,顾名思义,imQueue
不会更新
返回另一个不可变队列。
scala> imQueue
res33: scala.collection.immutable.Queue[Int] = Queue(1, 2, 3, 4, 5) // still original values