【发布时间】:2018-07-28 08:07:08
【问题描述】:
我有以下结构:
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 抛出错误:
没有更多上下文的表达类型是模棱两可的
有谁知道,如何解决这个问题?
期待您的回复!
【问题讨论】:
-
我相信 Swift 4.0.3 中改变了 inout 闭包参数的行为。您使用的是哪个版本的 Swift?另外,
editMyStruct是否还有其他重载?它对我来说很好用(Swift 4.0.3 版,在 REPL 中测试)。 -
@Palle Argh!真丢人。我注意到由于具有相同签名的另一个函数而引发了上述错误......是的,你是对的,上面的代码工作正常;)