2016-04-07 4 views
0

スカラのコレクション階層を示す写真を見ていました。スカラコレクション階層

それはTraversableの形質があり、階層の最上位にあるように見える、1つのステップダウンイテレータ()機能を有しており、道路リストと配列がありますが下る反復処理可能な形質...あり

単純なListオブジェクトを作成し、それに対してiterator()を呼び出そうとすると、それがListの一部ではないというエラーが投げられました。

今、私はリストの反復表現を取得し、それを反復子で反復することができますが、私の質問は、このことがどのように動作するかを理解することです。リストクラスがiterator()関数Iteratorは同じ階層を上回っているので

私はJava開発者の目には私の質問にあるものを見ています。

ありがとうございます。

答えて

4

List[A]、あなたが述べたように、Iterable[A]であり、そのようなものとして、それは、リストの要素の反復子を取得するために呼び出すことができますiterator方法(括弧なし)があります:あなたが呼び出す場合

val it: Iterator[Int] = List(1, 2, 3).iterator 

trait GenIterableLike[+A, +Repr] extends Any with GenTraversableLike[A, Repr] { 
    def iterator: Iterator[A] 
... 

あなたはScalaのにメソッド呼び出しについて読むことができます:iteratorメソッドがGenIterableLike特性にそれらなしで定義されているため、ブラケットiterator()と、それは、それは動作しません。。 アリティ-0方法は括弧の有無にかかわらず定義することができますが、あなたは(def m = {})、後者のために行く場合は、このようにそれらを呼び出すことはできません:m()

+0

感謝。私は実際にばかげている、私は括弧のないイテレータを使用しましたが、私はTuple5(リストの前に '(1,2,3,4,5)'のリストを作成したので、私は 'イテレータなし'エラー... – theexplorer

+1

それは最高に起こる、私を信頼してください。そして、私はそれらの1つではありません:D –