這個問題在這里已經有了答案: 變數 'xxx' 從未發生過變異,請考慮更改為 'let' (5 個回答) 18 小時前關閉。
我有自定義陣列類,如:
public typealias JsonValue = AnyHashable;
public class Json {
public private(set) var raw: NSMutableDictionary
// ...
public subscript(key: String) -> JsonValue? {
get {
return self.raw[key];
}
set(value) {
raw[key] = value;
}
}
}
然后像這樣使用它:
var myVariable = Json();
myVariable["key"] = "value";
但 Swift 警告如下:
Variable 'myVariable' was never mutated; consider changing to 'let' constant
我如何告訴 Swift 我正在變異myVariable?
我已經嘗試過
mutating關鍵字,但這導致錯誤(告訴 setter 不允許)。我在 Xcode 12 上使用 Swift 5。
uj5u.com熱心網友回復:
您的變數具有參考(類)型別,因此該變數僅包含對類實體的參考,并且未發生變異。
a struct(值型別)和 a class(參考型別)之間有很大的區別。在這種情況下,您應該將宣告更改為:
let myVariable = Json()
要使用參考型別改變變數,您必須分配一個新實體,例如
myVariable = Json()
你似乎想要你的
Json型別的值語意。如果是這樣,只需將其設為struct. 有關更多資訊,請參閱Swift 指南
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/393536.html
上一篇:如何縮短OR的串列||GoogleApps腳本中的運算子
下一篇:數獨求解器在無效的地方重復數字1
