【发布时间】:2019-07-08 12:33:21
【问题描述】:
我正在向我的应用程序添加一些语法糖,但我遇到了“不一致”。这可能是有充分理由的,但是有没有办法稍微清理一下实现。 我这样做是为了提供一个地方来设置/获取一些属性。
enum MyType: String {
case Unknown, First, Second
var enabled: Bool {
set { UserDefaults.standard.set(newValue, forKey: self.rawValue) }
get { return UserDefaults.standard.bool(forKey: self.rawValue) }
}
}
现在我可以使用枚举值来获取默认值
if MyType.First.enabled {
........
}
但是我不能直接设置值:
MyType.First.enabled = true
引发'无法设置属性,First 不可分配'
但我可以逃脱
var type = MyType.First
type.enabled = true
有没有简单的使用单行法的方法?
【问题讨论】:
-
你在找
nonmutating set,我不知道是否值得写答案,因为你只需要在set关键字之前添加nonmutating关键字。如果有人可以将其扩展为完整的答案,请这样做。
标签: swift enums setter computed-properties