0Pricing
Swift Academy · レッスン

構造体の計算プロパティ

get専用およびget/setの計算プロパティで値を導出します。

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

ようこそ

計算プロパティは値を保持せず、必要に応じて値を計算して返します。呼び出し側からはプロパティのように見えますが、内部ではコードが実行されます。

読み取り専用の計算プロパティ

```swift struct Circle { var radius: Double var area: Double { .pi * radius * radius } var circumference: Double { 2 * .pi * radius } } var c = Circle(radius: 5) print(c.area) // 78.53... ```

get と set

```swift struct Temperature { var celsius: Double var fahrenheit: Double { get { celsius * 9/5 + 32 } set { celsius = (newValue - 32) * 5/9 } } } var t = Temperature(celsius: 0) print(t.fahrenheit) // 32 t.fahrenheit = 212 print(t.celsius) // 100 ```

get の省略記法 — get キーワードを省略する

読み取り専用プロパティでは、`get { }` のラッパーを省略できます。 ```swift var area: Double { .pi * radius * radius } // same as { get { ... } } ```

set 内の newValue

`set` の内部では、受け取った値はデフォルトで `newValue` という名前になります。 ```swift set { celsius = (newValue - 32) * 5/9 } ``` また、明示的に名前を付けることもできます。 ```swift set(degF) { celsius = (degF - 32) * 5/9 } ```

計算プロパティは値を保持しない

計算プロパティにはバッキングストレージがありません。アクセスするたびにコードが実行されます。 ```swift struct Stats { var scores: [Int] var average: Double { guard !scores.isEmpty else { return 0 } return Double(scores.reduce(0,+)) / Double(scores.count) } } ```

静的な計算プロパティ

```swift struct Config { static var appName: String { Bundle.main.infoDictionary?["CFBundleName"] as? String ?? "App" } } print(Config.appName) ```

プロトコルでの計算プロパティ

```swift protocol Greetable { var greeting: String { get } } struct Person: Greetable { var name: String var greeting: String { "Hello, \(name)!" } } ``` プロトコルでは計算プロパティを要求できます。`{ get }` または `{ get set }` を指定するだけです。

計算プロパティと格納プロパティのパフォーマンス

• 計算プロパティ: アクセスのたびに再計算されます。頻繁に読み取るプロパティでは、コストの高い計算を避けてください • コストの高い計算を一度だけ行う値には `lazy var` を使用します: ```swift lazy var thumbnail: UIImage = generateThumbnail() ```

式本体とブロック

Swift 5.9 以降では、単一式の計算プロパティは暗黙的に値を返します。 ```swift var fullName: String { "\(first) \(last)" } // equivalent to: var fullName: String { return "\(first) \(last)" } ```

確認問題

プロパティの `set` ブロック内で、受け取った値に付けられるデフォルトの名前は何でしょうか?

まとめ

主なポイント: • 計算プロパティはアクセスのたびにコードを実行します。格納用のバッキングストレージはありません • 読み取り専用の場合は、`get` / `set` を省略するか、`{ return ... }` の省略記法を使用します • 読み書き可能にするには、`get` と `set(newValue)` のブロックを指定します • `area`、`fullName`、単位変換などの導出値に適しています • 計算コストの高い、一度だけ計算する値には `lazy` を使用します 次は、変更可能メソッドです。

よくある質問

「構造体の計算プロパティ」レッスンは無料ですか?

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

「構造体の計算プロパティ」で何を学びますか?

get専用およびget/setの計算プロパティで値を導出します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「構造体の計算プロパティ」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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