繁体   English   中英

如何将 function 传递给 Swift 中的另一个 class

[英]How to pass a function to another class in Swift

我需要一些帮助将 function 传递给我的第二个 class。 我已经尝试了很多东西,但它仍然不起作用。

class Main {
    func one() {
        let test = Sub(function: two)
    }
    func two(val: Int, completion: ((Int, String)?)->()) { }
}

class Sub {
    var function: (Int, ((Int, String)?)->())
    init(function: (Int, ((Int, String)?)->())) {
        self.function = function
    }
}

为什么我在这条线上出错

let test = Sub(function: two)

它说: Cannot convert value of type '(Int, ((Int, String)?) -> ()) -> ()' to expected argument type '(Int, ((Int, String)?) -> ())'

是什么原因?

Function 有一个返回值加上完成,你需要改变function var inisde Subinit的语法

class Main {
    func one() {

        let test = Sub(function: two)
    }
    func two(val: Int, completion: ((Int, String)?)->()) { }
}

class Sub {
    var function: ((Int, ((Int, String)?)->())) -> ()
    init(function:@escaping ((Int, ((Int, String)?)->())) -> ()) {
        self.function = function
    }
}

@escaping 需要添加

 class Main {
        func one() {
            let test = Sub(function: two)
        }
        func two(val: Int, completion: (Int, String)?)->() { }
    }

class Sub {
    var function: (Int, (Int, String)?)->()
    init(function: @escaping (Int, (Int, String)?)->()) {
        self.function = function
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM