0Pricing
Swift Academy · レッスン

関数パラメータのデフォルト値

パラメータにデフォルト値を指定し、呼び出し側を簡潔にします。

「関数パラメータのデフォルト値」は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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. nil合体演算子
  2. デフォルト値の連鎖
  3. 関数パラメータのデフォルト値
  4. Dictionaryのデフォルトサブスクリプト
← Swift Academyに戻る