有没有办法在Swift 3中的计算属性中声明一个常量?

时间:2017-06-02 10:57:55

标签: swift computed-properties

我的Swift 3代码中有几个这样的属性:

var dinActive: Bool {
    get { return UserDefaults.standard.bool (forKey: "bo", fallback: true) }
    set { UserDefaults.standard.set (newValue, forKey: "bo") }
}
var spdif1Active: Bool {
    get { return UserDefaults.standard.bool (forKey: "spdif1", fallback: true) }
    set { UserDefaults.standard.set (newValue, forKey: "spdif1") }
}

我想知道我是否可以让它更紧凑。例如,我避免在getter和setter函数中重复字符串文字,例如let s = "bo"。这有可能吗?

另外,我想知道我是否可以将这个重复的模式变成更短的代码,比如我可以用类和泛型,或者用C中的#define宏。虽然,这可能是更好的问题一个单独的问题。如果您对此有建议并且尚未对此进行回答,请添加评论,我会对其提出新的问题。

1 个答案:

答案 0 :(得分:0)

你可以在课堂外为它创建一个常量。例如:

//declaring constant outside of class
let SPDif1Key: String = "spdif1"

class YourClass
{
    var dinActive: Bool {
        get { return UserDefaults.standard.bool (forKey: SPDif1Key, fallback: true) }
        set { UserDefaults.standard.set (newValue, forKey: SPDif1Key) }
    }
}