0

我有以下结构:

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 抛出错误:

在没有更多上下文的情况下,表达式的类型是模棱两可的

有谁知道,如何解决这个问题?

期待你的回复!

4

1 回答 1

0

找到了答案!

的语法editMyStruct(action: (inout MyStruct) -> ())必须是:

editMyStruct(action: { (myStruct: inout MyStruct) in
    myStruct.myInt = 20
    myStruct.myString = "Bar"
})

编辑

啊!真丢人。我注意到由于具有具有相同签名的另一个函数而引发了上述错误......上面的代码很好;)

于 2018-02-17T16:32:01.280 回答