是通过值或引用传递的字典

时间:2019-04-03 01:21:01

标签: swift dictionary

尝试在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。

1 个答案:

答案 0 :(得分:0)

字典按值传递。如果需要在调用方中对其进行更新,则可以将函数声明为采用inout Dictionary,或者可以在闭包中捕获它。