質問

Option 暗黙的にに変換可能です Iterable - しかし、なぜ単に実装しないのですか Iterable 直接:

def iterator = new Iterator[A] {
  var end = !isDefined
  def next() = {
    val n = if (end) throw new NoSuchElementException() else get
    end = true
    n
  }

  def hasNext = !end
}

編集: 実際、2.8 ではそれよりもさらに奇妙です。 Option を宣言します iterator 方法:

def iterator: Iterator[A] = 
  if (isEmpty) Iterator.empty else Iterator.single(this.get)
役に立ちましたか?

解決

私は必要とされるであろう、あまりにも多くの非無意味な方法があったことを考えています。

:たとえば、戻り値がためになるために何を期待します
Some(1) ++ Some(2)

これは現在コンパイルおよび2.8における暗黙経由一覧(1,2)と評価されたが、奇妙に思えるます。

たぶんそれは2.7と言うでなぜdocコメントであります

Only potentially unbounded collections should directly sub-class Iterable

編集の私は、サブタイプのコレクションへのdocコメントの勧告が潜在的に誤解されて残して、以下MATTRさんのコメント@に示すように。そして、それはこの質問にモーフィング「なぜオプションは、コレクションの形質を拡張しないの?」

検討
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top