🦔

【DAY11】100 Days of SwiftUI -access control, static properties and meth

2023/01/07に公開

はじめに

iOSアプリ界隈で(たぶん)有名なPaul Hudsonさんが無料で公開しているSwiftUIの100日学習コースを進めてみます。学習記録及び備忘録がてらにつらつらと書いてみます。
100 Days of SwiftUI

学んだこと

序盤はSwiftUIは関係なくSwiftという言語の言語仕様のお話。

アクセスコントロール

一般的な構造体と同じ。public, private, fileprivateなどがある。例えば以下のような銀行口座の構造体があるとする。

struct BankAccount {
    var funds = 0
    
    mutating func deposit(amount: Int) {
        funds += amount
    }
    
    mutating func withdraw(amount: Int) -> Bool {
        if funds >= amount {
            funds -= amount
            return true
        } else {
            return false
        }
    }
}

この場合、外部から残高(funds)を変更できてしまうため

private var funds = 0

とする必要がある。ただしprivateでは参照もできなくなってしまうため上記の例では

private(set) var funds = 0

とするのが適切。

staticプロパティ/メソッド

一般的な書き方と同じ。

struct School {
    static var studentCount = 0
    
    static func add(student: String) {
        print("\(student) joined the school")
        studentCount += 1
    }
}

School.add(student: "Taylor Swift")  // 出力: Taylor Swift joined the school
print(School.studentCount)  // 出力: 1

Discussion