回答:
..
カスケード表記として知られています。同じオブジェクトで複数のメソッドを呼び出す場合、同じターゲットを繰り返さないようにすることができます。
List list = [];
list.add(color1);
list.add(color2);
list.add(color3);
list.add(color4);
// with cascade
List list = [];
list
..add(color1)
..add(color2)
..add(color3)
..add(color4);
それはダートのカスケード演算子です
var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);
結果としてl1
リストになります[0, 1, 2, 3]
var l1 = new List<int>().add(0).addAll([1, 2, 3]);
.add(0)
返されるため、エラーになりますvoid
..
(前者の例では)はを参照しnew List()
、.
(後者では)式の前の部分の戻り値を参照します。
..
のthis
ようなあらゆる種類のメソッドで戻る必要を回避するために導入されましたadd()
APIを流暢に使用できるにました。
..
これは、すべてのクラスにそのまま使用できます。
new
はオプションです。..
返されたリストを指すnew List<int>()
など、その上に複数のメソッドを呼び出すことができますadd(0)
addAll(...)
繰り返すことなくl1.
、それがに割り当てられて作成されたリストのインスタンスであるl1
、ないチェーン内の最後のメソッドの戻り値(addAll(...)
)。これはあなたの質問に答えますか?
new
Dart 2.0以降はオプションであることはわかっnew
ています。上記のコンテキストで混乱しました。説明をありがとうございます。
..add(6)
のようですl1.add(6)
、の.add(6)
ようl1.add(5).add(6)
です。add(5)
戻ってvoid
、あなたが呼び出すことができませんadd()
にvoid
カスケード(..)を使用すると、同じオブジェクトに対して一連の操作を実行できます。詳細はドキュメントを読んでください
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
前の例は次と同等です。
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
..onClick
翻訳しないのbutton.classes.onClick
ですか?
.. (in former example) refers to new List()
、私の意見ではNOList
を使用..
しているときに、もう一度新しいものを作成しているということですか。私はあなたのnew
言葉に混乱しました、それは本当に新しいのですか、それともnew
ここでキーワードについて話しているのですか?