ぜのぜ

写真以外をそのままのっけるブログ

41日目 Type Subscripts

日記

自分の家が一番落ち着く

今日書いたコード

enum Planet: Int {
    case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
    static subscript(n: Int) -> Planet {
        return Planet(rawValue: n)!
    }
}
let mars = Planet[4]
print(mars)

enum Env {
    static var envs: [String: String] = [:]

    static subscript(_ name: String) -> String? {
        get {
            return envs[name]
        }
        set {
            envs[name] = newValue
        }
    }
}
Env["hoge"] = "hoge"
print(Env["hoge"])

初めて知ったこと

staticなsubscriptを定義できること.これはSwift 5.1で実装された比較的新しい機能で,例えば環境変数を表すのに丁度いいよねといったことがプロポーザルに書いてある.

以前何回か使い方はよくわからないって書いたことあったけど,プロポーザルを読めばわかりそうなので今後は読んでいきたい.OSS最高です.