我想为字典类型的计算属性中的键设置一个值。我想做这样的事情:
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]()
,当我覆盖子类中的属性时,我想为所述字典赋值。
答案 0 :(得分:1)
语法
var dict: [String: String] {
get {
dict["a"] = "b"
}
}
是
的缩写形式set
表示只读属性。
您需要添加var dict: [String: String] {
get {
return [:]
}
set {
dict["a"] = "b"
}
}
ter
AsyncTask
但是要小心,当你自己调用setter时你很容易遇到无限循环(在这个例子中它就是这样)。
实际上,这种计算属性仅在您要映射另一个值时才有用。
答案 1 :(得分:0)
当我覆盖子类中的属性时,我想为所述字典赋值。
呃......就这么做:
class A {
var dict: [String: String] {
return [:]
}
}
class B: A {
override var dict: [String : String] {
return ["Hello":"Hi"]
}
}
您是否忘记了override
关键字?