はじめに
本記事では、Dartにおける関数の基本的な使い方から、少し進んだテクニックまでを解説します。これにより、Dartでの開発がさらに効率的になります。前回変数について紹介しましたので、そちらを見たい方は以下となります。
関数とは
関数は、一連のコードをまとめて名前を付けることで、後から簡単に呼び出すことができる仕組みです。Dartでは、関数はすべてのプログラムの基本構成要素であり、効率的なコードの記述に大きく貢献します。
関数の定義と呼び出し
Dartで関数を定義するのは非常に簡単です。次のように、returnType functionName(parameters)
の形式で関数を定義し、functionName(arguments)
の形式で呼び出します。以下例になります。
int add(int a, int b) {
return a + b;
}
void main() {
var result = add(3, 5);
print(result); // 8を出力
}
この例では、add
という名前の関数が2つの引数を取り、その合計を返します。main
関数内でadd
を呼び出し、結果をコンソールに出力しています。
省略可能な引数
Dartの関数では、引数を省略可能に設定することができます。省略可能な引数は、関数が呼び出されたときに渡されなかった場合、デフォルト値を使用します。省略可能な引数は、中括弧 {}
で囲み、parameterName: defaultValue
の形式でデフォルト値を指定します。以下例になります。
※デフォルト値を設定しないとコンパイルエラーになりますのでご注意ください。
void greet(String name, {String greeting = 'Hello'}) {
print('$greeting, $name!');
}
void main() {
greet('Tech Grow Up'); // 'Hello, Tech Grow Up!'を出力
greet('Tech Grow Up', greeting: 'Hi'); // 'Hi, Tech Grow Up!'を出力
}
この例では、greet
関数がname
とgreeting
という2つの引数を受け取りますが、greeting
は省略可能で、デフォルト値は'Hello'
です。
アロー関数
Dartでは、関数の本文が単一の式である場合、アロー関数として簡略化することができます。アロー関数は、=>
を使用して定義され、コードを短く保ちながら同じ機能を提供します。以下例となります。
int multiply(int a, int b) => a * b;
void main() {
print(multiply(4, 5)); // 20を出力
}
この例では、multiply
関数がアロー構文で定義されており、2つの引数の積を返します。
無名関数
無名関数(またはラムダ)は、名前のない関数です。これらは一時的な処理に便利で、他の関数の引数として渡すことがよくあります。無名関数はfunction(parameters) { body }
の形式で定義されます。以下例になります。
void main() {
var numbers = [1, 2, 3, 4];
numbers.forEach((num) {
print(num * num);
});
}
この例では、forEach
メソッドに無名関数を渡しており、リスト内の各要素を二乗して出力しています。
関数を返す関数
Dartでは、関数自体を返す関数を定義することも可能です。これにより、柔軟なコードの再利用や高階関数を実現できます。以下例になります。
Function createMultiplier(int n) {
return (int x) => x * n;
}
void main() {
var multiplyByTwo = createMultiplier(2);
print(multiplyByTwo(5)); // 10を出力
}
この例では、createMultiplier
関数が、指定された数値で乗算する新しい関数を返します。
まとめ
今回は基本的な関数定義から、アロー関数、無名関数、関数を返す関数までの多様な機能を説明しました。これらの機能を理解し、適切に活用することで、Dart(Flutter)での開発がより効率的になると思います。
Flutter開発入門の次の記事はこちらです。