はじめに
Dart では、関数(Function)を使うことで 処理の再利用 や コードの整理 ができます。
この記事では、関数の定義から呼び出し、戻り値、オプション引数 までを体系的に解説します。
1. 関数とは?
関数(Function) は、ひとまとまりの処理を再利用可能にしたものです。
Dart では、以下の構文で定義します。
戻り値の型 関数名(引数) {
// 実行したい処理
return 戻り値;
}
2. 基本的な関数の定義と呼び出し
// 定義
void greet(String name) {
print('こんにちは、$name さん!');
}
// 呼び出し
void main() {
greet('Anna');
}
解説
-
voidは「戻り値がない」ことを意味します。 - 引数
String nameは、関数に渡すデータです。 - 呼び出しは
関数名(引数)の形で行います。
3. 戻り値のある関数
int add(int a, int b) {
return a + b;
}
void main() {
int result = add(3, 5);
print('結果は $result です');
}
ポイント
- 戻り値の型を
intと指定します。 -
returnキーワードで値を返します。
4. アロー関数(短縮記法)
処理が1行だけなら、=> を使って簡潔に書けます。
int add(int a, int b) => a + b;
void main() => print(add(2, 3));
5. オプション引数(Optional Parameters)
① 位置指定オプション引数 [ ]
void greet([String name = 'ゲスト']) {
print('こんにちは、$name さん!');
}
void main() {
greet(); // デフォルト値が使われる
greet('Jun'); // 引数を指定
}
② 名前付き引数 { }
void greet({required String name, int age = 0}) {
print('こんにちは、$name さん($age 歳)');
}
void main() {
greet(name: 'Anna', age: 25);
}
補足
-
{}内の引数は 名前で指定 して渡します。 -
requiredを付けると省略できなくなります。
6. 無名関数(匿名関数 / ラムダ式)
関数をその場で定義して使うこともできます。
void main() {
var greet = (String name) {
print('やあ、$name!');
};
greet('Taro');
}
7. 関数を変数として扱う
Dart の関数は「第一級オブジェクト」なので、
変数やリストに格納して自由に扱えます。
int add(int a, int b) => a + b;
int multiply(int a, int b) => a * b;
void main() {
var funcs = [add, multiply];
print(funcs[0](2, 3)); // => 5
print(funcs[1](2, 3)); // => 6
}
まとめ
| 概念 | Dart での書き方 | 説明 |
|---|---|---|
| 基本定義 | void greet(String name) |
戻り値なし |
| 呼び出し | greet('Anna') |
実行 |
| 戻り値あり | int add(int a, int b) |
値を返す |
| アロー関数 | => |
簡潔な書き方 |
| オプション引数 |
[ ] / { }
|
値を省略可能 |
| 無名関数 | (args) { ... } |
その場で関数定義 |
| 関数を変数に | var f = add; |
第一級オブジェクト |
Dart の関数は、柔軟で表現力が高い のが特徴です。
Flutter の UI コールバック(onPressed: () => ...)なども、
すべてこの「関数の定義と呼び出し」の仕組みを使っています。