Menu
Coddy logo textTech

オプションの位置引数

CoddyのDartジャーニー「基礎」セクションの一部 — レッスン 72/94。

Dart でのオプションの位置パラメータ は、一部のパラメータがオプションの関数を作成できるようにします。パラメータを角括弧 [] 内に配置することで定義します。

オプションの位置パラメータを持つ関数を作成します:

void greet(String name, [String? greeting]) {
  if (greeting != null) {
    print('$greeting, $name!');
  } else {
    print('Hello, $name!');
  }
}

void main() {
  greet('Dart');
  greet('Dart', 'Welcome');
}

上記のコードを実行した後、出力は次のようになります:

Hello, Dart!
Welcome, Dart!

複数の省略可能なパラメータを持つことができます:

int calculateTotal(int quantity, [int price = 10, int tax = 2]) {
  return quantity * price + tax;
}

void main() {
  print(calculateTotal(5));
  print(calculateTotal(5, 20));
  print(calculateTotal(5, 20, 5));
}

上記のコードを実行すると、出力は以下のようになります:

52
102
105
challenge icon

チャレンジ

初心者

このチャレンジでは、Dart関数におけるオプションの位置パラメータの使用を練習します。オプションの位置パラメータを使用すると、一部のパラメータがオプションの関数を作成できます。

下記のgreet関数を完成させてください。この関数は必須のnameパラメータとオプションのtitleパラメータを受け取ります。titleが提供された場合、関数はtitleとnameの両方を含む挨拶を返します。titleが提供されていない場合、nameのみを使用します。

期待される出力:

Hello, John!
Hello, Dr. Smith!

チートシート

Dart では、オプションの位置パラメータは、パラメータを角括弧 [] 内に置くことで定義されます:

void greet(String name, [String greeting]) {
  if (greeting != null) {
    print('$greeting, $name!');
  } else {
    print('Hello, $name!');
  }
}

デフォルト値を持つ複数のオプションのパラメータを持つことができます:

int calculateTotal(int quantity, [int price = 10, int tax = 2]) {
  return quantity * price + tax;
}

オプションのパラメータを持つ関数は、必要な引数のみを提供するか、オプションのものを含めて呼び出せます:

greet('Dart');           // Uses default behavior
greet('Dart', 'Welcome'); // Uses provided optional parameter

自分で試してみよう

void main() {
  // これらの変数はすでに定義されています
  String person1 = "John";
  String person2 = "Smith";
  String title = "Dr.";
  
  // 名前だけで greet 関数を呼び出す
  print(greet(person1));
  
  // 名前とタイトルで greet 関数を呼び出す
  print(greet(person2, title));
}

// TODO: オプションのタイトルパラメータで greet 関数を完成させる
// タイトルパラメータはオプションであるべきです(角括弧 [] を使用)
String greet(String name) {
  // タイトルが提供された場合、"Hello, {title} {name}!" を返す
  // タイトルが提供されない場合、"Hello, {name}!" を返す
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン