質問編集履歴
1
質問の主旨がはっきりしていないようなので、追記した。
title
CHANGED
File without changes
|
body
CHANGED
@@ -54,4 +54,25 @@
|
|
54
54
|
上記のクラス階層だと、ListIterable<E>のメンバ(ListIteratorインスタンスで初期化されたiteratorプロパティ)をList<E>が継承することはできないですよね。
|
55
55
|
|
56
56
|
どこか他の場所でList<E>クラスとListIterable<E>クラスの関係性を示すコードがあるのでしょうか?
|
57
|
-
それともこのコードでList<E>クラスのインスタンスのiteratorプロパティは適切に初期化されるのでしょうか?
|
57
|
+
それともこのコードでList<E>クラスのインスタンスのiteratorプロパティは適切に初期化されるのでしょうか?
|
58
|
+
|
59
|
+
2020/11/29/15:30追記
|
60
|
+
質問の主旨なのですが、
|
61
|
+
|
62
|
+
iterable、iteratorなどの基本を学ぶ中で、
|
63
|
+
|
64
|
+
リストリテラルなどで生成したList<E>型のインスタンスがfor-inループでイテレートできる以上、List<E>インスタンス内のiteratorプロパティに有効なIterator<E>(あるいはそのサブクラス)のインスタンスがセットされているはずなので、それをソースコードで確認したい、
|
65
|
+
|
66
|
+
という考えが発生しました。
|
67
|
+
それを確認するためにソースコードのどこを見れば良いか、ということが質問の主旨です。
|
68
|
+
リストリテラルで生成されるリストがList<E>型のコンストラクタで生成されるとすると、
|
69
|
+
|
70
|
+
結局List<E>クラスのコンストラクタが、(toast-uz様にお示し頂いた)Iterable.generate()コンストラクタを呼び出しているなら、
|
71
|
+
ListIterableのサブクラスが生成されるので、全てつながると思うのですが、
|
72
|
+
List<E>クラスのコンストラクタを見ると
|
73
|
+
```ここに言語を入力
|
74
|
+
external factory List.filled(int length, E fill, {bool growable = false});
|
75
|
+
```
|
76
|
+
のようにコンストラクタは全てexternal修飾子がついていて、ボディが記述されていないようです。
|
77
|
+
externalというのは、メソッド(コンストラクタ)のボディは別の場所で定義されている、ということらしいのですが、
|
78
|
+
その場所ってどこなのでしょうか?
|