Swiftのデフォルト引数の使い方と便利な実例を完全ガイド!初心者でも安心して学べる関数の基本
生徒
「Swiftで関数を使うときに、毎回全部の引数を書かないといけないんですか?」
先生
「実はSwiftでは、引数にあらかじめ値を設定しておける“デフォルト引数”という機能があるんです。」
生徒
「あらかじめ値を入れておけるんですね!それってどうやって使うんですか?」
先生
「それでは、Swiftのデフォルト引数の使い方と便利な例を一緒に見ていきましょう!」
1. Swiftのデフォルト引数とは?
Swift(スウィフト)では、関数を定義する際に引数に「あらかじめ決めておく値」を指定できます。これを「デフォルト引数(default argument)」と呼びます。
これを使うことで、毎回すべての引数を指定する必要がなくなり、関数の呼び出しがとても簡単になります。
2. デフォルト引数の基本的な書き方
Swiftでデフォルト引数を使うには、関数の定義時に引数に「= 値」をつけます。次のような書き方です。
func greet(name: String = "ゲスト") {
print("こんにちは、\(name)さん!")
}
この関数は、「name」に値を指定しなくても呼び出せます。
greet() // 引数なしでもOK
greet(name: "太郎") // 引数を渡すことも可能
こんにちは、ゲストさん!
こんにちは、太郎さん!
3. デフォルト引数の便利な使い方
デフォルト引数は、実際のアプリ開発でも非常によく使われます。たとえば、ログ出力や日付のフォーマット、ボタンの初期表示などで役立ちます。
次は、メッセージを送る関数の例です。送り先やメッセージの種類にデフォルト値を設定しています。
func sendMessage(to name: String = "未指定", message: String = "こんにちは", isUrgent: Bool = false) {
if isUrgent {
print("⚠️ 緊急メッセージ:\(message)(宛先:\(name))")
} else {
print("メッセージ:\(message)(宛先:\(name))")
}
}
sendMessage()
sendMessage(to: "花子")
sendMessage(message: "お元気ですか?")
sendMessage(to: "太郎", message: "すぐに連絡ください", isUrgent: true)
メッセージ:こんにちは(宛先:未指定)
メッセージ:こんにちは(宛先:花子)
メッセージ:お元気ですか?(宛先:未指定)
⚠️ 緊急メッセージ:すぐに連絡ください(宛先:太郎)
このように、必要な引数だけ指定すればよく、コードがすっきりして読みやすくなります。
4. デフォルト引数の順番に注意しよう
デフォルト引数を使うときは、引数の順番に注意しましょう。デフォルト値のない引数は、必ず前に書く必要があります。
// 正しい例
func printInfo(name: String, age: Int = 20) {
print("\(name)さんは\(age)歳です。")
}
// 間違った例(エラーになります)
func printInfo(age: Int = 20, name: String) {
// デフォルト引数の後ろに通常の引数があるとダメ
}
このように、Swiftではデフォルト引数は後ろに書くのがルールです。
5. 関数のオーバーロードとデフォルト引数
関数の「オーバーロード」とは、同じ名前の関数を引数の数や型で使い分けることです。Swiftでは、デフォルト引数とオーバーロードは併用できますが、意図せず同じような関数が複数できてしまうと混乱の元になります。
func log(message: String) {
print("通常ログ: \(message)")
}
func log(message: String, isDebug: Bool = false) {
if isDebug {
print("デバッグログ: \(message)")
} else {
print("通常ログ: \(message)")
}
}
このような場合、コンパイルエラーになることがあります。関数の定義が重なってしまうからです。オーバーロードとデフォルト引数を同時に使うときは、定義の重複に注意しましょう。
6. デフォルト引数があるとコードが短くなる
たとえば、次のように複数の関数を分けて書く代わりに、デフォルト引数を使えば1つの関数でまとめることができます。
// デフォルト引数を使わない場合
func sayHelloToTaro() {
print("こんにちは、太郎さん!")
}
func sayHelloToHanako() {
print("こんにちは、花子さん!")
}
// デフォルト引数を使った場合
func sayHello(to name: String = "ゲスト") {
print("こんにちは、\(name)さん!")
}
このように、コードの重複を防いでスッキリ書くことができます。これがSwiftのデフォルト引数の魅力です。