我想用Swift声明一个参数,它有一个可选的闭包.我声明的函数如下所示:

class Promise {

 func then(onFulfilled: ()->(), onReject: ()->()?){       
    if let callableRjector = onReject {
      // do stuff! 
    }
 }

}

但Swift 抱怨说,"条件中的绑定值必须是可选类型",其中声明了"if let".

推荐答案

您应该将可选闭包括在括号中.这将正确地确定?操作员的范围.

func then(onFulfilled: ()->(), onReject: (()->())?){       
    if let callableRjector = onReject {
      // do stuff! 
    }
 }

Swift相关问答推荐

SWIFT中MAP的静态方法包装器

如何分解阿拉伯字母?

将`@Environment`值赋给`Binding`参数

以编程方式使UIView居中,而不影响UIKit中其他UI类的位置

NavigationLink和ObservableObject的动画片段

如何从UIKit中的AttributeContainer获取属性并将其分配给某个变量

除法中如果除以完全因数需要更长时间吗?

本地对象的异步/等待引用捕获总是安全的还是理论上不安全?

从一个范围减go 多个范围

Swift 并发:@MainActor 对象上的通知回调

如何在 SWIFTUI 中旋转修剪?

Swift 根据总值将数组拆分为块

获取具有关联类型的协议的self

Swift 非参与者隔离闭包

Swift:创建用于调用 C 函数的指针数组

如何确定扩展中的具体类型?

iOS SwiftUI - 无法转换 ObservedObject 类型的值

如何更改弹出框的大小

使用相机进行人脸检测

Xcode6 中的 Swift 类与 Cocoa Touch 类