#9 Dartで学ぶ関数の基本
Dartの関数は、他の現代的な言語と似た、読みやすい書き方が特徴です。この記事では、Dartにおける関数の基本と、Flutter開発で頻出する書き方を解説します。
関数を作ってみる
void greet(String name) {
print("こんにちは、$name さん");
}
値を返す関数
int add(int a, int b) {
return a + b;
}
簡潔に書ける矢印構文
処理が1行で済む場合、Dartには波かっことreturnを省略できる、簡潔な書き方があります。
int add(int a, int b) => a + b;
省略可能な位置引数
引数を角かっこ[]で囲むと、省略可能な引数として扱えます。
void greet(String name, [String honorific = "さん"]) {
print("こんにちは、$name $honorific");
}
greet("太郎"); // こんにちは、太郎さん
greet("太郎", "様"); // こんにちは、太郎様
名前付き引数
Dartには、引数を{}で囲むことで、呼び出し時に名前を指定して渡せる仕組みがあります。
void greet({required String name}) {
print("こんにちは、$name さん");
}
greet(name: "太郎");
Flutterの画面部品(ウィジェット)を作る際に、この名前付き引数の書き方が頻繁に登場します。引数がいくつもある場合でも、name: ...のように名前を書きながら渡せるため、どの値が何を表しているか読みやすくなります。
関数を値として扱う
Dartでは関数そのものを変数に入れたり、別の関数の引数として渡したりできます。
void applyToEach(List numbers, void Function(int) action) {
for (var n in numbers) {
action(n);
}
}
applyToEach([1, 2, 3], (n) => print(n * 2));
void Function(int)は「intを受け取りvoidを返す関数」という型を表しています。ボタンが押されたときの処理をコールバックとして渡す場面など、Flutter開発では関数を値として扱う場面が非常に多く登場します。
Dartならではの注意点
名前付き引数はrequiredを付けないと省略可能になり、値を渡し忘れてもエラーにならない場合があります。必須にしたい引数には、必ずrequiredを付ける習慣をつけましょう。また、位置引数の省略([])と名前付き引数({})は同じ関数の中で組み合わせて使うこともできますが、両方を多用すると呼び出し方が複雑になりやすいため、用途に応じてどちらか一方に統一するのがおすすめです。
まとめ
Dartの関数は矢印構文で簡潔に書け、名前付き引数はFlutter開発でも重要な書き方です。省略可能な位置引数([])との違いや、requiredの使い方も覚えておきましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Dartをもっと学びたい方には「ゼロから学ぶFlutterアプリ開発」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿