MENU

【Dart】ダブルドットなカスケード記号の使い方

この記事を読むのに必要な時間は約 4 分です。

この記事ではdart language tour の要約で「..」で表されるカスケード記号の使い方について説明します。

目次

カスケード記号 ダブルドット.. の使い方

①カスケードノーテーションの使い方

同一オブジェクトに対して複数の連続した処理を実行したい場合にカスケード記号「..」を使うことでコードを省略できます。

下記の例ではbuttonインスタンスに対して複数処理を行なっています。

var button = Button(); 
button.color = Colors.black;
button.strokeCap = StrokeCap.round;
button.strokeWidth = 5.0;

下記のようにカスケード記号を用いることでbutton を省略することができます。

var button = Button()  // ; はなしなので注意
  ..color = Colors.black
  ..strokeCap = StrokeCap.round
  ..strokeWidth = 5.0;

②void に対してカスケード記号は使用できない

sb.write()メソッドはvoid型を返す(何も返さない)ので、voidに対してカスケード表記をすることはできません。

var sb = StringBuffer();
sb.write('foo') // このwrite は返り値void なので
  ..write('bar'); // このカスケードはエラーになる

これを実現したいなら下記のようにします。

main(){
var sb = StringBuffer()
  ..write('foo')
  ..write('bar');
  print(sb); // foobar
}

③便利な使い方

リスト[1,2,3]に新しい要素 4 を加えた後、ソートして表示したい時にカスケードノーテーションを使うと、一行で書けます。

それに対してカスケードノーテーションが無いと、addメソッドもsortメソッドも返り値の型はvoid型なので、必ず一時変数a を用意する必要があります。

a.add(4).sort() のような関数を連続して呼び出すコードは書けないので、下記のように最低でも4行必要になります。

void main(){
  // カスケードノーテーションあり
  print([3,1,2]..add(4)..sort()); // [1,2,3,4]
  
  // カスケードノーテーションなし
  List<int> a = [3,1,2];
  a.add(4);
  a.sort();
  print(a); // [1,2,3,4]
}

以上!

カテゴリー

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次