型(struct・class・enum) - Swift

最終更新日: 2026-07-26

TOP(About this memo)) > 一覧(Swift) > 型(struct・class・enum)

値型と参照型

インスタンス

イニシャライザ

let myString = String.init("Hello, World!")

普通は省略形として下記のように書く。

let myString = String("Hello, World!")

型が決まっている場合は.initで省略表記可能。

let a: String = .init("aaaaa")
private func isActiveDestination(_ number: Int) -> Binding<Bool> {
    .init(
        get: { selectedNumber == number },
        set: { selectedNumber = $0 ? number : nil }
    )
    /*
    上記は下記のようにも書ける。
    return Binding(
        get: { selectedNumber == number },
        set: { selectedNumber = $0 ? number : nil }
    )
    */
}

プロパティ

struct

struct 構造体名: プロトコル {
    let name: String // ストアドプロパティ(stored property)
    var age: Int {   // コンピューテッドプロパティ(computed property)
        return 20 // Swift 5.1からは式がひとつならreturnを省略可。
    }
    init(name: String) {
        self.name = name // ageの初期化は不要
    }
    func メソッド() -> 戻り値の型 {
        return 戻り値
    }
}

mutating

struct Character {
    var hitPoint: Int = 100
    func damage() { // mutating func damage とする必要がある(なお、SwiftUIなら @State var hitPoint: Int = 100 とするやり方でもOK)
        hitPoint -= 30 // error: Left side of mutating operator isn't mutable: 'self' is immutable
    }
}

クラス

Enum

let myPet = Animal.dog

は以下のように書ける

var myPet: Animal
myPet = .dog
init?(rawValue: String) {
    switch rawValue {
    case :
        self = .
    case :
        self = .
    default:
        return nil
    }
}

デコード・エンコード(WIP)