Option
不是Traversable
有理由嗎?爲什麼選項不可穿過?
在斯卡拉2.9,Seq(Set(1,3,2),Seq(4),Option(5)).flatten
不編譯,只是它實現Traversable
特質接縫對我來說是合理的。如果不是這種情況,肯定會有一些我不認爲不允許的東西。它是什麼?
PS:當試圖去理解,我實現了編譯,就像可怕的事情:
scala> Seq(Set(1,3,2),Seq(4),Map("one"->1, 2->"two")).flatten
res1: Seq[Any] = List(1, 3, 2, 4, (one,1), (2,two))
PS2:我知道我可以寫:Seq(Set(1,3,2),Seq(4),Option(5).toSeq).flatten
或其它醜陋的東西。
PS3:有接縫要在最後一個月的工作,使Option
看起來更像Traversable
沒有實現它:commit,another commit
對於語言(或在這種情況下的庫)設計這樣的問題,通常最好直接詢問語言(或庫)設計者。他們在郵件列表上相當敏感,但只是偶爾訪問StackOverflow。 – 2012-01-03 23:42:13
@JörgWMittag這將是很高興有SO編譯答案,雖然.. – 2012-01-04 10:39:51