Swiftの可変長引数(Variadic Parameters)とは?初心者向けにやさしく解説!
生徒
「Swiftで、複数の値を一つの関数に渡したいときってどうすればいいですか?」
先生
「その場合は『可変長引数(かへんちょうひきすう)』という仕組みを使いますよ。」
生徒
「可変長引数ってなんですか? むずかしそう……」
先生
「安心してください。初心者でも分かるように、簡単な例を使って説明しますね!」
1. Swiftの可変長引数(Variadic Parameters)とは?
Swift(スウィフト)の関数では、引数の数が決まっていない場合に『可変長引数』という機能を使うことができます。これは、関数に「何個でも」値を渡せる便利な書き方です。
たとえば、「1つでも2つでも10個でも数字を受け取って、合計を出す」ような関数を作るときに使います。
2. 可変長引数の書き方と基本構文
Swiftで可変長引数を使うには、引数の型の前に...(ピリオド3つ)を付けます。たとえば、整数を何個でも受け取る関数は次のように書きます。
func printNumbers(numbers: Int...) {
for number in numbers {
print(number)
}
}
このようにInt...と書くと、関数を呼び出すときに何個でもIntの値を渡せます。
3. 実際に使ってみよう:数字を表示する関数
さきほど紹介したprintNumbers関数を使って、いろいろな数を渡してみましょう。
printNumbers(numbers: 1, 2, 3)
printNumbers(numbers: 10, 20)
printNumbers(numbers: 100)
このように、渡す数の個数に制限がありません。実行結果は以下のようになります。
1
2
3
10
20
100
4. 可変長引数の中身は配列になる
可変長引数は、関数の中では自動的に「配列(はいれつ)」として扱われます。配列とは、複数のデータをまとめて持てる箱のようなものです。
だから、for文で繰り返し処理をしたり、合計を出したりすることが簡単にできます。
func sumNumbers(numbers: Int...) -> Int {
var total = 0
for number in numbers {
total += number
}
return total
}
この関数は、渡された数字をすべて足し算して、合計を返します。
let result = sumNumbers(numbers: 5, 10, 15)
print(result)
30
5. 可変長引数は複数指定できる?
可変長引数は、1つの関数の中で1回だけ使うことができます。つまり、複数の可変長引数を同時に使うことはできません。
以下のように書くとエラーになります:
func invalidFunction(a: Int..., b: Int...) {
// これはエラーになる
}
代わりに、通常の引数と可変長引数を組み合わせて使うことは可能です。ただし、可変長引数は最後に書く必要があります。
func showInfo(name: String, scores: Int...) {
print("名前: \(name)")
for score in scores {
print("点数: \(score)")
}
}
showInfo(name: "田中", scores: 80, 90, 100)
名前: 田中
点数: 80
点数: 90
点数: 100
6. 可変長引数はどんなときに使う?
可変長引数は、以下のようなときに使うと便利です:
- 合計や平均など、まとめて計算したいとき
- ログ出力やメッセージ表示など、柔軟に値を受け取りたいとき
- データの件数が決まっていないとき
たとえば、電卓アプリや成績計算プログラムなど、さまざまなアプリで活用できます。
7. Swiftの関数設計で知っておきたい注意点
初心者の方は、つい便利だからと何でもかんでも可変長引数にしてしまいがちですが、すべてに使うのはおすすめしません。
なぜなら、引数が配列になるため、型のミスや意味の分かりにくいコードになりやすいからです。設計の意図に合っている場合のみ使いましょう。