Swift Academy · レッスン

メンバー単位のイニシャライザとカスタムイニット

自動生成されるメンバー単位のイニットを理解し、カスタムイニシャライザを記述します。

レッスン 1/412 ステップ

「メンバー単位のイニシャライザとカスタムイニット」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

ようこそ

Swiftの構造体には、すべての格納プロパティを受け取る *メンバーワイズイニシャライザ* が自動的に用意されます。ただし、独自のイニシャライザロジックでカスタマイズしたり拡張したりすることもできます。

自動生成されるメンバーワイズイニシャライザ

```swift struct Point { var x: Double var y: Double } let p = Point(x: 3.0, y: 4.0) // auto-generated init ``` `init` を自分で記述する必要はありません。コンパイラが用意してくれます。

カスタムイニシャライザの追加

```swift struct Circle { var radius: Double var area: Double init(radius: Double) { self.radius = radius self.area = .pi * radius * radius } } let c = Circle(radius: 5.0) ```

メンバー単位イニシャライザの保持

カスタムイニシャライザを定義すると、自動生成されるメンバー単位イニシャライザは使用できなくなります。両方を保持するには、カスタムイニシャライザをエクステンションに配置します。 ```swift struct Rect { var width: Double; var height: Double } extension Rect { init(square side: Double) { self.init(width: side, height: side) } } // Both Rect(width:height:) and Rect(square:) available ```

プロパティのデフォルト値

```swift struct Config { var debug = false var maxRetries = 3 var timeout: TimeInterval = 30 } let c1 = Config() // all defaults let c2 = Config(debug: true) // memberwise with overrides ```

self.initによるイニシャライザの委譲

```swift struct Temperature { var celsius: Double init(celsius: Double) { self.celsius = celsius } init(fahrenheit: Double) { self.init(celsius: (fahrenheit - 32) / 1.8) } init(kelvin: Double) { self.init(celsius: kelvin - 273.15) } } ```

失敗可能イニシャライザ

```swift struct Percentage { let value: Double init?(_ value: Double) { guard (0...100).contains(value) else { return nil } self.value = value } } let p = Percentage(105) // nil ```

検証付きイニシャライザ

```swift struct Username { let value: String init?(_ raw: String) { let trimmed = raw.trimmingCharacters(in: .whitespaces) guard trimmed.count >= 3 else { return nil } self.value = trimmed } } ```

構造体のイニシャライザとクラスのイニシャライザ

クラスのイニシャライザとの主な違い: • 構造体では `self.init()` による委譲を使用できます • 構造体はイニシャライザを継承しません(`super.init()` もありません) • すべての格納プロパティを使用前に初期化する必要があります • `required` や `designated` / `convenience` キーワードはありません

`init(from decoder:)` の概要

`Decodable` に準拠する構造体には、イニシャライザが自動的に追加されます。 ```swift struct User: Decodable { let name: String let age: Int } // Auto-synthesised init(from:) for JSON decoding let user = try JSONDecoder().decode(User.self, from: json) ```

確認問題

自動生成されるメンバー単位イニシャライザを保持するには、カスタムイニシャライザをどこに配置すればよいでしょうか?

まとめ

主なポイント: • 構造体にはコンパイラによってメンバー単位イニシャライザが自動的に追加されます • 構造体本体にカスタムイニシャライザを定義すると、メンバー単位イニシャライザは使用できなくなります • 両方を保持するには、カスタムイニシャライザをエクステンションに配置します • イニシャライザ間の委譲には `self.init()` を使用します • 失敗可能イニシャライザは、入力が無効な場合に `nil` を返します 次は、格納プロパティとプロパティオブザーバーです。
無料で開始

AI チューターと学ぶ Swift — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
122
レッスン
409

よくある質問

「メンバー単位のイニシャライザとカスタムイニット」レッスンは無料ですか?

はい。「メンバー単位のイニシャライザとカスタムイニット」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「メンバー単位のイニシャライザとカスタムイニット」で何を学びますか?

自動生成されるメンバー単位のイニットを理解し、カスタムイニシャライザを記述します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「メンバー単位のイニシャライザとカスタムイニット」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

  1. メンバー単位のイニシャライザとカスタムイニット
  2. 格納プロパティとプロパティオブザーバー
  3. 構造体の計算プロパティ
  4. ミューテーティングメソッドとコピーオンライトのセマンティクス
← Swift Academyに戻る