/ / ¿Cómo llamar a la cola de cola de Scala (iter: Iterable [B])? - Scala

¿Cómo llamar a la cola de cola de Scala (iter: iterable [B])? - Scala

En scala "s immutable.Queue, hay dos metodos ambos nombrados enqueue:

  /** Creates a new queue with element added at the end
*  of the old queue.
*
*  @param  elem        the element to insert
*/
def enqueue[B >: A](elem: B) = new Queue(elem :: in, out)

/** Returns a new queue with all elements provided by an `Iterable` object
*  added at the end of the queue.
*
*  The elements are prepended in the order they are given out by the
*  iterator.
*
*  @param  iter        an iterable object
*/
def enqueue[B >: A](iter: Iterable[B]) =
new Queue(iter.toList reverse_::: in, out)

No sé cómo resolver la ambigüedad y llamar al segundo. Esto es lo que he intentado:

Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_07).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import collection.immutable.Queue
import collection.immutable.Queue

scala> val q: Queue[Int] = Queue(1,2,3)
q: scala.collection.immutable.Queue[Int] = Queue(1, 2, 3)

scala> q.enqueue(Iterable(4))
res0: scala.collection.immutable.Queue[Any] = Queue(1, 2, 3, List(4))

scala> q.enqueue[Int](Iterable(4))
<console>:10: error: overloaded method value enqueue with alternatives:
(iter: scala.collection.immutable.Iterable[Int])scala.collection.immutable.Queue[Int] <and>
(elem: Int)scala.collection.immutable.Queue[Int]
cannot be applied to (Iterable[Int])
q.enqueue[Int](Iterable(4))
^

Respuestas

8 para la respuesta № 1

¡Difícil, complicado!

yo creó un boleto acerca de eso Usted ve, ha sido engañado por los tipos!

scala> q.enqueue(scala.collection.Iterable(4))
res8: scala.collection.immutable.Queue[Any] = Queue(1, 2, 3, List(4))

scala> q.enqueue(scala.collection.immutable.Iterable(4))
res9: scala.collection.immutable.Queue[Int] = Queue(1, 2, 3, 4)

los Iterable importado por defecto es el scala.collection.Iterable, que puede ser mutable o inmutable, pero la cola inmutable requiere la inmutable Iterable en lugar.