本文へスキップ
BecomeCoder

Swift(iOSアプリ)コース · 第4章 型と関数でモデルを作る · レッスン15

struct ― データのかたちを作る

ブラウザで完結

導入

「ユーザー=名前+年齢」「商品=名前+価格」。関連する値をひとまとめにした自分専用の型が struct(構造体) です。SwiftUIの画面もモデルも、struct が主役です。

説明

struct にプロパティ(保持する値)とメソッド(振る舞い)を書きます。

struct User {
    var name: String
    var age: Int

    func introduce() -> String {
        return "\(name)\(age)歳)"
    }
}

var user = User(name: "田中", age: 28)
print(user.introduce())
user.age = 29
print(user.age)

User(name:age:) のように、プロパティ名がそのまま初期化の引数になります(メンバーワイズイニシャライザ)。

計算で求まる値は 計算プロパティ にできます({ } の中で計算して返す)。

struct Rect {
    var width: Double
    var height: Double
    var area: Double { width * height }   // 計算プロパティ
}
let r = Rect(width: 3, height: 4)
print(r.area)    // 12.0

structは 値型 です。コピーすると中身も別物になり、片方を変えてももう片方に影響しません。SwiftUIはこの性質を前提に設計されています。

やってみよう

User に好きなプロパティ(例:var hobby: String)を足して、introduce() の文面に組み込んでみましょう。

演習

struct Book { var title: String; var price: Int } を作り、Book(title: "Swift入門", price: 2000)priceprint してください。

ヒント1を見る

let book = Book(title: "Swift入門", price: 2000)

ヒント2を見る

print(book.price)

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Swift / SwiftUI — ブラウザ内で実行(学習用)

Swiftの教材サブセットを動かす学習用ランナーを読み込みます。ふつうのコードは print の出力を表示し、SwiftUI(struct: View)を書くと右にiPhone風のライブプレビューを描画します(本物のXcode/Swiftコンパイラではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。