この記事を読むのに必要な時間は約 5 分です。
この記事ではNamed 引数 (Named parameter) とPositional (Positional parameter) 引数の違いと使い方をまとめています。
・Named 引数、Positional 引数のどちらも任意引数であり、かつデフォルト値を設定できる。
・Named 引数は{} で囲い、Positional 引数は[]で囲う。
Named 引数は関数呼び出し時に引数名を指定することで可読性が向上するためよりベター。
・Flutter では可読性が高いNamed 引数が主に使われる。
最も簡単な引数指定
①引数指定のおさらい
そもそも、最も簡単な引数の指定は下記のようになります。
デフォルト値を設定、パラメータの位置変更、省略はできません。
void normalParams(int id, String name){ print($id, $name); } main(){ normalParams(1, "bob"); // console 1,bob normalParams(1); // エラー }
Positional 引数
①Positional 引数の使い方
引数を[] で囲うことでPositional 引数を定義できます。
任意引数となるのでpositionalParams関数を呼び出す際に引数name は省略でき、デフォルト値を設定可能です。
void positionalParams(int id, [String name = "you"]){ print("$id, $name"); } main(){ positionalParams(1, "bob"); // console 1,bob positionalParams(1); // console 1,you }
名前付き引数
①名前付き引数の使い方
引数を{} で囲うことで名前付き引数を定義できます。
namedParams関数を呼び出す際、引数の前に「name: 」の記載が必須なので引数の意味が明示できます。
また、Positional 引数と同様に任意引数であり、デフォルト値の設定、省略も可能です。
void namedParams(int id, {String name = "you"}){ print("$id, $name"); } main(){ namedParams(1, name: "bob"); // console 1,bob namedParams(1); // console 1,you }
required を付けることでNamed 引数でありながら必須の引数にもできます。
この場合、必ず値が渡されるのでデフォルト値は設定できません。
void namedParams(int id, {required String name}){ print("$id, $name"); } main(){ namedParams(1, name: "bob"); // console 1,bob namedParams(1); // エラー }
Flutterでは可読性の高いNamed 引数をほとんどのWidgetに使用しています。
例えばScaffold は引数名(appBar: , body: )を指定して呼び出しますし、MyApp はkey をNamed 引数で定義していますよね。
Scaffold( appBar: // ... body: // ... ) class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); // ...
以上、Named 引数 (Named parameter) とPositional (Positional parameter) 引数の違いと使い方をまとめてみました!
コメント