🕺

fuctionの種類

2024/06/13に公開

Dartを勉強していて、大まかに3種類のfunctionが存在することに気づいた。

・戻り値がない関数(void)
・戻り値がある関数
・匿名関数(無名関数、ラムダ関数)

戻り値がない関数

voidで定義される。ただ単に処理だけを行う関数。

void printSum(double number1, double number2) {
  print(number1 + number2);
}

戻り値がある関数

関数内の処理が終わったら、結果が返ってくる.
戻り値のある関数は、特定の型が返ってくるように定義をする。

double sum(double number1, double number2) {
 double result = number1 + number2
  return result;
}

匿名関数(無名関数、ラムダ関数)

名前を持たない関数で、その場で処理を定義する。
一つの処理だけであれば、下記のように書ける

var sum(int number1,int number2) => number1 + number2;

void main() {
  // 5
  print(sum(3,2));
}

複数の処理を書くとき

var sumMultiply = (int number1,int number2) {
  int sum = number1 + number2;
  return sum * sum;
};

void main() {
  // 25
  sumMultiply(3,2);
}

関数を変数に入れる注意点

変数に匿名関数のような関数を代入している場合、関数を参照している。
関数そのものを参照する:

void main() {
  var sum = () => 2 + 3;
  // Closure: () => int
  print(sum);
}

関数を値そのものとして、表示しようとするので
print(sum);では、Closure: () => intという結果になる。

関数呼び出す:

void main() {
  var sum = () => 2 + 3;
  // 5
  print(sum());
}

変数に関数を代入して、関数として扱いたいときは、
変数() とすることで、処理を実行できる。

Discussion