【Swift/SwiftUI】関数の戻り値をタプル型へ

本記事では、Swiftで使用する関数の戻り値をタプル型にする方法とそのメリットと使い方について詳細に解説していきます。

本記事でもタプル型の基本的な使い方については軽く触れますが、別の記事より詳細な使い方について解説していますのでそちらをご覧下さい。

タプル型

タプル型は複数のデータをひとまとまりにして扱うデータ型の一つです。

データを扱う専用の構造体を定義するよりも手軽に、関連のあるデータひとまとまりにして扱うことができます。格納するデータ型にも制限はなく、文字列や数値を一緒に格納することが可能です。

一方で、タプルからタプルへのデータの受け渡しの際はお互いの要素のデータ型や個数が異なるとエラーが発生してしまう点は注意が必要です。

また、構造体などと異なりプロパティなどの概念がない点もそこまで汎用性の高いものではないため、データの受け渡しなどで一時的に値を保持する際に輝くデータ型です。

関数の戻り値としてのタプル

関数は通常、戻り値を1つしか返却することができません。

ですが、時には複数の関連する値をまとめて返却したい場合もあります。

そんなときにそれぞれの値を別の関数で定義してそれぞれ一つずつ取得するのは面倒ですよね。

そこで大活躍するのがタプル型データです。1つのタプル型データで関数からの戻り値を複数返却することができます。

関数の戻り値にタプル型を設定

実際にタプル型データを関数の戻り値に設定していきます。

例として数値の入った配列を引数として渡し、その中から最大値と最小値を取り出して返却する関数を作成します。

戻り値のデータ型と戻り値を「()」で囲み、返却予定のデータ型を入れることでタプル型の一つのデータとして複数の値を返却することができます。

戻り値のデータ型として宣言したデータ型と実際の戻り値のデータ型が異なったり、順番が変わったり、タプル内の要素数が違うとエラーになってしまうのでご注意ください。

//配列の中から最大値と最小値を返却する
func searchMaxMin(numbers: [Int]) -> (Int, Int){
    var min = numbers.min()
    var max = numbers.max()
    return (min!, max!)
}

タプル型の戻り値を使用

タプル型を返却する関数に配列を渡してその戻り値を受け取る処理は、一般的な関数と全く同様の受け取り方となり、特別な対応をする必要はありません

ただ、事前にタプル型変数を定義しておいて、そこに戻り値を代入する場合にはタプルのフォーマットが同様のものであるかには注意が必要です。

var numbers = [5,3,2,7,8,10,6,1]
var maxMin = searchMaxMin(numbers: numbers)
print(maxMin)  //出力結果 (1,10)

//配列の中から最大値と最小値を返却する
func searchMaxMin(numbers: [Int]) -> (Int, Int){
    var min = numbers.min()
    var max = numbers.max()
    return (min!, max!)
}

受け取ったタプルから値を取り出す際には0から始まるインデックス番号を指定します。

var numbers = [5,3,2,7,8,10,6,1]
var maxMin = searchMaxMin(numbers: numbers)
print(maxMin)  //出力結果 (1,10)
print(maxMin.0) //出力結果 1
print(maxMin.1) //出力結果 10

最後に

本記事では関数の戻り値としてタプル型データを活用する方法について解説しました。常に決まったデータ型、個数の値を扱う際に便利ですのでぜひ利用してみてください。

他にもSwift/SwiftUIの関数の宣言方法や関数に変数の参照を引数として渡す方法について解説する記事も書いていますのでそちらもご覧ください。