[英]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.