「Flutter」 Cascade notation・カスケード表記
日本語版
用語の説明
Flutterを勉強し始め、コードを探し始めると、時々このような表記に出会うことがあります: smth..smth()..
.
この表現はカスケード表記と呼ばれています。
カスケード(...)
を使うと、同じオブジェクトに対して一連の操作を行うことができます。関数呼び出しの他に、その同じオブジェクトのフィールドにアクセスすることもできます。これにより、一時的な変数を作成する手順が省かれることが多く、より流動的なコードを書くことができるようになります。
例えば、次のような感じです。
myObject..method1()..method2()..method3();
myList?..method1()..method2()..method3()..method4();
リスト例 **
var fruits = ["りんご","スイカ","バナナ"];
fruits..clear()..add("イチゴ")..add("ぶどう")..add("チェリー")..sort();
print(fruits);
この例は下に書いてるコードと一緒です。
var fruits = ["りんご","スイカ","バナナ"];
fruits.clear();
fruits.add("イチゴ");
fruits.add("ぶどう");
fruits.add("チェリー");
fruits.sort();
print(fruits);
クラス例
class Book {
String? title;
int? pageNumbers;
void setTitle(String title) {
this.title = title;
}
void setPageNumbers(int pageNumbers) {
this.pageNumbers = pageNumbers;
}
void printInfo() {
print("書名: ${title ?? '不明'}");
print("書籍のページ数: ${pageNumbers ?? '提供しない'}");
}
}
void main() {
Book()
..setTitle('オーバーロード')
..setsetPageNumbers(253)
..printInfo();
final instance = Person();
instance
..setTitle('ナルト')
..setsetPageNumbers(121)
..printInfo();
}
出力はこのようになります。
// 書籍1
書名: Overlord
書籍のページ数: 253
// 書籍 2
書名: Naruto
書籍のページ数: 121
English ver.
Term explenation
When you start your adventure with Flutter and start looking for some codes, sometimes you may encounter such a notation: smth..smth().. etc
.
This expression is called Cascade notification.
Cascades (..) allow you to make a sequence of operations on the same object. In addition to function calls, you can also access fields on that same object. This often saves you the step of creating a temporary variable and allows you to write more fluid code.
For example, it can look like this.
myObject..method1()..method2()..method3();
myList?..method1()..method2()..method3()..method4();
List Example
var fruits = ["apple","melon","banana"];
fruits..clear()..add("strawberry")..add("grape")..add("cherry")..sort();
print(fruits);
This example is equal to this ↓
var fruits = ["apple","melon","banana"];
fruits.clear();
fruits.add("strawberry");
fruits.add("grape");
fruits.add("cherry");
fruits.sort();
print(fruits);
Class Example
class Book {
String? title;
int? pageNumbers;
void setTitle(String title) {
this.title = title;
}
void setPageNumbers(int pageNumbers) {
this.pageNumbers = pageNumbers;
}
void printInfo() {
print("Book title: ${title ?? 'Unknown'}");
print("Book page numbers: ${pageNumbers ?? 'Not provided'}");
}
}
void main() {
Book()
..setTitle('Overlord')
..setsetPageNumbers(253)
..printInfo();
final instance = Person();
instance
..setTitle('Naruto')
..setsetPageNumbers(121)
..printInfo();
}
Output should look like this.
// Book 1
Book title: Overlord
Book page numbers: 253
// Book 2
Book title: Naruto
Book page numbers: 121
Discussion