2015-09-10 81 views
0

我該如何預先設定,即consIterable預先添加到Iterable?

scala> val xs: Iterable[Int] = Seq(1) 
xs: Iterable[Int] = List(1) 

scala> xs :: 5 
<console>:15: error: value :: is not a member of Int 
     xs :: 5 
     ^

我看着docs,但沒有弄明白。

回答

6

::特定於List。它實際上是 a List

由於不是所有的Iterable都會保證訂單(例如Set不是),所以沒有任何概念預先註冊到Iterable。您可能需要Seq,這將使用+:作爲前置。

+0

我比我更喜歡這個答案。你想使用'Seq'。 – wheaties

+0

由於我用Seq手動滾動序列函數(來自scalaz/haskell),所以我查找了Iterable。但後來我有了一套,所以我拿了Set和Seq的LUB - 這是Iterable。 –

+0

您可以用'Iterable'完成的最佳操作是使用'++'進行連接,這不一定會預訂或保留訂單。 –

3

Iterable沒有一個prepend方法,但你可以使用「+」連接兩個iterables:

scala> val xs: Iterable[Int] = Seq(1) 
xs: Iterable[Int] = List(1) 

scala> List(5) ++ xs 
res0: List[Int] = List(5, 1) 

Seq確實有一個前置的方法,+:,你可以轉換成一個序列:

scala> 5 +: xs.toSeq 
res1: Seq[Int] = List(5, 1) 
相關問題