Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
生徒
「Swiftの関数で、何か値を返すときってどうすればいいんですか?」
先生
「それは戻り値と呼ばれるもので、関数の処理結果を返す仕組みですね。たとえば、足し算の結果を返すなど、よく使われますよ。」
生徒
「なるほど。でも戻り値って1つだけですか? もし複数の情報を返したいときは?」
先生
「いい質問です!Swiftでは複数の戻り値を返す方法もあります。それじゃあ、順番に基本から解説していきましょう。」
1. 戻り値(もどりち)とは?
関数の処理が終わったあと、その結果を呼び出し元に返すことを「戻り値を返す」と言います。
たとえば、2つの数を足して、その合計だけを返す関数が典型的です。
2. 単一の戻り値を返す基本構文
戻り値がある関数は、-> 戻り値の型で書きます。以下は整数型(Int)の戻り値を返す例です。
func add(a: Int, b: Int) -> Int {
return a + b
}
let result = add(a: 3, b: 5)
print(result)
8
returnは、結果を返すためのキーワードです。
3. 戻り値の型はいろいろ使える
戻り値は、String(文字列)やDouble(小数)など、さまざまな型を使えます。
func greet(name: String) -> String {
return "こんにちは、\(name)さん!"
}
let message = greet(name: "太郎")
print(message)
こんにちは、太郎さん!
4. 戻り値がない場合の書き方
値を返さない関数は、戻り値の型を省略するか、-> Voidと書きます。
func sayHello() {
print("こんにちは!")
}
もしくは明示的にこう書いてもOKです:
func sayHello() -> Void {
print("こんにちは!")
}
5. 複数の戻り値を返す方法(タプル)
Swiftでは、タプルという形を使えば、複数の値を一度に返すことができます。タプルはかんたんに言えば「複数の箱を1つにまとめたもの」です。
func getUserInfo() -> (String, Int) {
return ("花子", 25)
}
let info = getUserInfo()
print(info.0)
print(info.1)
花子
25
info.0やinfo.1のように、位置でアクセスできます。
6. 戻り値に名前をつけて返す
タプルに名前をつけると、より分かりやすくなります。
func getUserInfo() -> (name: String, age: Int) {
return (name: "太郎", age: 30)
}
let user = getUserInfo()
print(user.name)
print(user.age)
太郎
30
このように名前をつけることで、読みやすくなり、エラーも減らしやすくなります。
7. 複数の戻り値を使う場面
例えば、テストの点数と合格・不合格の判定を同時に返すような関数では、複数の戻り値が便利です。
func checkScore(score: Int) -> (Int, String) {
if score >= 80 {
return (score, "合格")
} else {
return (score, "不合格")
}
}
let result = checkScore(score: 75)
print("点数:\(result.0)、判定:\(result.1)")
点数:75、判定:不合格
このように、ひとつの関数で複数の情報を返すことができます。
8. 戻り値に変数を代入して再利用
戻り値を変数に入れておけば、あとから何度でも使うことができます。
func getGreeting() -> String {
return "こんにちは!"
}
let greeting = getGreeting()
print(greeting)
print(greeting + " また会いましょう!")
こんにちは!
こんにちは! また会いましょう!
このように、一度戻り値を取り出しておけば、繰り返し使えるのも便利なポイントです。
9. 戻り値を無視して使いたいとき
関数の戻り値があるけど、必要ない場合もあります。そのときは代入せずに使ってOKです。
func getNumber() -> Int {
return 42
}
_ = getNumber()
_ =と書くことで、「戻り値はいらないよ」という意味になります。