Dart(Flutter)で関数から複数の値を返し分割代入する方法

2024年7月9日火曜日

Flutter

t f B! P L

関数から複数の戻り値を返す方法と、それを呼び出し元で分割代入する方法を、具体的なコード例とともに詳しく解説します。この記事では、Dart 3.0で導入されたタプルを使用した複数値の返却と、従来のリストで複数値を返す2つの方法を解説します。

タプルを使用した方法

Dart 3.0で導入されたタプルを使用することで、関数から複数の値を型安全に返すことができます。タプルは複数の異なる型の値を一つの単位として扱うことを可能にします。

(String, int) getUserInfo() {
  String name = "Alice";
  int age = 30;
  return (name, age);
}

呼び出し元での分割代入

関数から返されたタプルを呼び出し元で受け取り、分割代入を使用して個々の変数に展開します。

void main() {
  var (name, age) = getUserInfo();
  print('Name: $name, Age: $age');
}

この分割代入は、タプルの各要素を直接的に個々の変数に割り当てることを可能にし、コードの明瞭さと効率を向上させます。

リストを使用した方法

リストでの戻り値の定義

リストを使用して関数から複数の戻り値を返す場合、リストの各要素に任意のデータ型を使用することができます。

List<dynamic> getUserDetails() {
  String name = "Bob";
  int age = 25;
  return [name, age];
}

呼び出し元での分割代入

リストからの戻り値を分割代入を使用して個々の変数に割り当てます。この機能はリストの構造を保ちつつ、各要素を直接的にアクセス可能な変数に分割します。

void main() {
  var [String name, int age] = getUserDetails();
  print('Name: $name, Age: $age');
}

このコードは、関数から返されたリストの各要素を型指定付きで個別の変数に割り当てます。これにより、リスト内のデータへのアクセスが明確かつ直接的になります。

まとめ

Dartにおいて関数から複数の戻り値を効率的に扱う方法として、タプルとリストの両方が有効です。タプルを使用した場合は型安全性が確保され、リストを使用した場合は柔軟性が得られます。どちらの方法も呼び出し元での分割代入を利用することで、コードの可読性と保守性が向上します。適切な方法を選択することで、より効率的でクリーンなコードを書くことが可能になります。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ