代码之家  ›  专栏  ›  技术社区  ›  Gagan_iOS

Swift 4中的额外参数调用

  •  0
  • Gagan_iOS  · 技术社区  · 6 年前

    我正在尝试将我的Swift 3.2代码转换为Swift 4.2。我有下面的课

    class Bindable<T>{
        typealias Listener = ((T) -> Void)
        var listener: Listener?
    
        var value: T {
            didSet {
                listener?(value)
            }
        }
    
        init(_ v: T) {
            self.value = v
        }
    
        func bind(_ listener: Listener?) {
            self.listener = listener
        }
    
        func bindAndFire(_ listener: Listener?) {
            self.listener = listener
            listener?(value)
        }
    
    } 
    

    在Swift 3.2中,如果我在下面写

    public var otpField = Bindable("")
    public var validationErrorText = Bindable(false, "")
    public var otp_Status = Bindable(false, "")
    public var bindableLoadingObjectOtp = Bindable(false, "")
    

    它工作得很好,但当我试图在4.2中转换时,出现了错误' '(见下图)

    enter image description here

    3 回复  |  直到 6 年前
        1
  •  2
  •   dan    6 年前

    在swift3中,这两个参数隐式转换为一个元组参数,因此 Bindable(false, "") 创建类型为的对象 Bindable<(Bool, String)> .

    Bindable((false, ""))

        2
  •  0
  •   Jad Ghadry    6 年前

    您的 Bindable<T> 类只接受一个参数,而您使用多个参数来调用它 validationErrorText , otp_Status bindableLoadingObjectOtp 变量。

        3
  •  0
  •   Mohmmad S    6 年前

    Bindable 虽然

    可以添加另一个初始值设定项

    class Bindable<T>{
        typealias Listener = ((T) -> Void)
        var listener: Listener?
    
        var value: T {
            didSet {
                listener?(value)
            }
        }
        init (_ v:T){
            self.value = v
        }
        init(_ something: Bool,_ v: T) {
            self.value = v
        }
    
        func bind(_ listener: Listener?) {
            self.listener = listener
        }
    
        func bindAndFire(_ listener: Listener?) {
            self.listener = listener
            listener?(value)
    }
    }
    

    像这样使用 Bool