関数パラメータのデフォルト値
パラメータにデフォルト値を指定し、呼び出し側を簡潔にします。
「関数パラメータのデフォルト値」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
デフォルトパラメータとは
関数のパラメータにはデフォルト値を設定できます。呼び出し側がその引数を省略すると、Swiftが自動的にデフォルト値を補います。
func greet(name: String = "Guest") {
print("Hello, \(name)")
}
greet()
greet(name: "Ada")デフォルト値の宣言
パラメータの型の後に=を使ってデフォルト値を指定します。デフォルト値が使われるのは、呼び出し側がその引数を渡さなかった場合だけです。
func power(base: Int, exponent: Int = 2) -> Int {
var result = 1
for _ in 0..<exponent { result *= base }
return result
}
print(power(base: 5))
print(power(base: 5, exponent: 3))複数のデフォルト値
複数のパラメータにデフォルト値を指定できます。呼び出し側は、必要な引数だけを上書きできます。
func makeBox(width: Int = 1, height: Int = 1) -> Int {
return width * height
}
print(makeBox())
print(makeBox(width: 4))必須パラメータとデフォルト値の混在
必須パラメータにはデフォルト値がなく、デフォルト値を持つパラメータにはデフォルト値があります。呼び出し側が末尾のデフォルト値を簡単に省略できるよう、必須パラメータを先に置きます。
func send(message: String, urgent: Bool = false) {
print("\(urgent ? "URGENT: " : "")\(message)")
}
send(message: "Hi")
send(message: "Fire!", urgent: true)デフォルト値でオーバーロードを減らす
デフォルトパラメータがなければ、複数のオーバーロードされた関数を記述することがあります。デフォルト値を持つ1つの関数ですべて置き換えられます。
func connect(host: String, port: Int = 80) {
print("\(host):\(port)")
}
connect(host: "example.com")
connect(host: "example.com", port: 8080)任意の一部だけを上書きする
引数ラベルを使って明示的に指定すれば、他のデフォルト値を維持したまま、1つのデフォルト値だけを上書きできます。
func style(size: Int = 12, bold: Bool = false, italic: Bool = false) {
print("\(size) bold:\(bold) italic:\(italic)")
}
style(bold: true)デフォルト値には式も指定できます
デフォルト値には、適切な型の任意の式を指定できます。その式は引数が省略されたときに評価されます。
func now(stamp: Int = 1000 + 1) {
print(stamp)
}
now()
now(stamp: 5)オプショナルのデフォルト値
よく使われるパターンとして、オプショナルパラメータのデフォルト値をnilにします。これにより、呼び出し側はその引数を完全に省略できます。
func log(_ text: String, tag: String? = nil) {
print("[\(tag ?? "general")] \(text)")
}
log("Started")
log("Saved", tag: "db")nil合体との組み合わせ
デフォルトパラメータと??は相性がよく、オプショナルを受け取り、関数本体の中でnil合体を適用できます。
func price(amount: Int? = nil) -> Int {
return amount ?? 10
}
print(price())
print(price(amount: 25))イニシャライザでのデフォルト値
同じ機能を構造体のイニシャライザでも使えるため、適切なデフォルト値を持つオブジェクトを作成できます。
struct Settings {
var volume: Int
init(volume: Int = 50) {
self.volume = volume
}
}
print(Settings().volume)
print(Settings(volume: 80).volume)読みやすさの向上
デフォルトパラメータを使うと、呼び出し側を短くして一般的なケースを示しながら、必要な場合には細かく制御できます。
func repeatText(_ text: String, times: Int = 1) {
for _ in 0..<times { print(text) }
}
repeatText("Hi")
repeatText("Yo", times: 2)クイックチェック
デフォルトパラメータをテストします。
まとめ:関数パラメータのデフォルト値
デフォルトパラメータを使うと、呼び出し側は引数を省略できます。型の後に=を付けて宣言し、必須パラメータと組み合わせたり、柔軟なAPIのために??やオプショナルと組み合わせたりできます。
func tax(amount: Int, rate: Int = 10) -> Int {
return amount + amount * rate / 100
}
print(tax(amount: 100))よくある質問
「関数パラメータのデフォルト値」レッスンは無料ですか?
はい。「関数パラメータのデフォルト値」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「関数パラメータのデフォルト値」で何を学びますか?
パラメータにデフォルト値を指定し、呼び出し側を簡潔にします。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「関数パラメータのデフォルト値」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- nil合体演算子
- デフォルト値の連鎖
- 関数パラメータのデフォルト値
- Dictionaryのデフォルトサブスクリプト