MENU

【Dart】Named 引数とPositional 引数 の違いは?

この記事を読むのに必要な時間は約 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) 引数の違いと使い方をまとめてみました!

カテゴリー

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次