Swift:功能与内部关闭



我有以下结构:

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

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

你们中有人知道如何解决这个问题?

期待您的回应!

找到答案!

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

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

编辑

argh!对我感到羞耻。我注意到提到的错误是由于具有相同签名的另一个函数而引发的...上面的代码很好;(

最新更新