LoginSignup
4
3

More than 1 year has passed since last update.

Dartの関数、引数定義チートシート

Last updated at Posted at 2022-04-17

はじめに

Dartの引数定義パターンがややこしすぎるので、一覧でまとめてみました。

/// 通常の定義
void normalFunc(bool param1, bool param2) {
  // 引数名指定で関数実行はできない
  normalFunc(true, true);
}

/// 引数に名前指定が必要な関数。
void withNameParamNormalFunc({required bool param1, required bool param2}) {
  // 引数順番を入れ替えて挿入することができる
  withNameParamNormalFunc(param2: true, param1: true);
}

/// オプショナルパラメータ
void optionalParamFunc({bool? param1, bool? param2}) {
  // 全てオプショナルなので引数なしで実行可能
  optionalParamFunc();

  // オプショナル関数の場合は、引数名の指定が必ず必要
  optionalParamFunc(param2: true);
}

/// オプショナルパラメータ(デフォルト引数あり)
// デフォルト引数ありの場合は、引数の型をnull非許容型として定義できる。
void optionalParamWithDefaultPramFunc({bool param1 = true, bool param2 = true}) {
  // 全てオプショナルなので引数なしで実行可能
  optionalParamFunc();

  // オプショナル関数の場合は、引数名の指定が必ず必要
  optionalParamFunc(param2: true);
}

/// オプショナル位置パラメータ
void optionalPositionParamFunc(bool param1, [bool? param2]) {

  // オプショナル引数を使用しない場合は省略可能
  optionalPositionParamFunc(true);

  // 最後のparam2は入れなくても良い
  optionalPositionParamFunc(true, true);
}

/// 位置パラメータを使用しないオプショナル
void optionalNotPositionParamFunc(bool param1, {bool? param2}) {
  // オプショナルパラメータへ挿入には、引数名の指定が必要
  optionalNotPositionParamFunc(true, param2: true);
}


/// 関数オブジェクトを引数にとる場合
/// 1と2両方とも、関数オブジェクトを引数にとる
// 引数指定パターン1
String? invokeFunctionObject1(String computation(int,String)?) {
  return computation?.call(1,"param");
}
// 引数指定パターン2
String? invokeFunctionObject2(String Function(int,String)? computation) {
  return computation?.call(1,"param");
}
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3