我想用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相关问答推荐

Vapor, fluent 使用 PostgreSQL 保存/创建复杂模型

Apple 的自然语言 API 返回意外结果

AVPlayer 在 iOS 15.4 中寻求 completionHandler 返回 false

VStack SwiftUI 中的动态内容高度

如何使被拖动的对象成为前景(foreground)对象

多个工作表(isPresented :) 在 SwiftUI 中不起作用

Swift 中构造的泛型类型的扩展

使用 Swift 包管理器在单元测试中使用资源

SwiftUI 中有没有一种模糊背景的方法?

Swift 中的单元测试致命错误

如何在 SwiftUI Segmented Picker 中更改选定的段 colored颜色

Swift 用户界面.如何更改 TextField 的占位符 colored颜色 ?

如何在 swiftUI 中调整 HStack 元素之间的间距?

在 SwiftUI 中动态隐藏视图

SwiftUI 是否向后兼容 iOS 12.x 及更早版本?

使用 SwiftUI 转到新视图

Xcode 11:画布不显示

将 Apple 表情符号(字符串)转换为 UIImage

用于字符串资源格式的自定义 Swift 编码器/解码器

DispatchQueue:不能在非主线程上使用 asCopy = NO 调用