我有以下结构:
struct MyStruct {
var myInt: Int
var myString: String
}
应该在如下函数中编辑该结构:
func editMyStruct(action: (inout MyStruct) -> ()) {
var mutableMyStruct = MyStruct(myInt: 10, myString: "Foo")
action(&mutableMyStruct)
//do something with the modified 'mutableMyStruct' ...
}
但是,我确实很难调用 editMyStruct(action: (inout MyStruct) -> ())
。
editMyStruct(action: { myStruct in
myStruct.myInt = 20
myStruct.myString = "Bar"
})
XCode 抛出错误:
Type of expression is ambiguous without more context
你们有人知道如何解决这个问题吗?
期待您的回复!
最佳答案
找到答案了!
editMyStruct(action: (inout MyStruct) -> ())
的语法必须是:
editMyStruct(action: { (myStruct: inout MyStruct) in
myStruct.myInt = 20
myStruct.myString = "Bar"
})
编辑
啊啊!我真丢脸。我注意到由于具有相同签名的另一个函数而引发了上述错误...上面的代码很好;)
关于Swift:带有 inout 闭包的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48843298/