尝试在lambda函数中更改字典值,然后在调用者级别期待更新后的值。
let test = { (header: [String: Int]) -> Void in
header.updateValue(header["width"]! * 10, forKey: "width")
header.updateValue(header["height"]! * 10, forKey: "height")
}
test(header: ["width": 10, "height": 2])
print(header["width"]) // expecting 100
print(header["height"]) // expecting 20
问题:在呼叫者级别仍显示10和2。
答案 0 :(得分:0)
字典按值传递。如果需要在调用方中对其进行更新,则可以将函数声明为采用inout Dictionary
,或者可以在闭包中捕获它。