繁体   English   中英

在Swift 3中,有没有办法在计算属性内声明常量?

[英]Is there a way to declare a constant inside a computed property in Swift 3?

我的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宏那样。尽管如此,最好在单独的问题中提出。 如果您对此有任何建议,但仍未得到答复,只需添加一条评论,我将提出一个新问题。

您可以在类之外为其创建一个let常量。 例如:

//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) }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM