[英]How to set a value on computed property
我想为字典类型的计算属性中的键设置一个值。 我想做这样的事情:
class Foo {
var dict: [String: String] {
dict["a"] = "b"
}
}
但是,这不能编译。
无法通过下标分配:“ dict”是仅获取属性
我可以做这样的事情,但是有点冗长:
class Foo {
var values: [String: String] {
var tempValues = [String: String]()
tempValues["a"] = "b"
return tempValues
}
}
有更好的方法吗? 对于上下文,我要实现的是在默认情况下将dict
设为基类中的空[String: String]()
,当我覆盖子类中的属性时,我想为所述字典分配值。
语法
var dict: [String: String] {
dict["a"] = "b"
}
是的简写形式
var dict: [String: String] {
get {
dict["a"] = "b"
}
}
表示只读属性。
您需要添加set
var dict: [String: String] {
get {
return [:]
}
set {
dict["a"] = "b"
}
}
但是要小心,当您自己调用setter时,您很容易陷入无限循环(在此示例中就是如此)。
实际上,这种计算属性仅在要映射另一个值时才有用。
当我重写子类中的属性时,我想为所述字典分配值。
嗯...就做吧:
class A {
var dict: [String: String] {
return [:]
}
}
class B: A {
override var dict: [String : String] {
return ["Hello":"Hi"]
}
}
您是否忘记了override
关键字?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.