我正在尝试在 Swift 4.2 中转换我的 Swift 3.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 中进行转换时,出现错误“调用中的额外参数”(见下图)
请告诉我在 Swift 4.2 中转换时我做错了什么
最佳答案
在 Swift 3 中,两个参数隐式转换为单个元组参数,因此 Bindable(false, "")
创建一个 Bindable<(Bool, String)>
类型的对象.
Swift 4.2 显然不会进行这种隐式元组转换,所以你需要做 Bindable((false, ""))
获得相同的行为。
关于ios - Swift 4 中的额外参数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52539386/