我试图在一行if let中编写以下代码块:

 if let amount = datasource?.incrementForCount?(count) {

        count += amount
    }

    else if let amount = datasource?.fixedIncrement {
        count += amount
    }

当我try 这样的事情时:

 if let amount = datasource?.incrementForCount?(count) ||  let amount = datasource?.fixedIncrement {

        count += amount
    }

我有一个编译时错误.

我认为where条款不可能适用于本案.

有没有可能把这两个if let条语句合并成一个ORed条语句?

推荐答案

try 使用操作员??:

if let amount = datasource?.incrementForCount?(count) ?? datasource?.fixedIncrement 
{
    count += amount
}

是否可以将两个if-let语句组合成一个OR语句?

有可能有let条语句,比如

if let a = optionalA, b = optionalB { ... }

它们都应该返回非nil值才能通过.

但如果你也想使用一个逻辑条件:

  1. 可能是唯一一个
  2. 应该放在第一位,在任何let语句之前

Swift相关问答推荐

如何在realityKit中反转USDZ动画

如何在visionOS中进行购买?&# 39;购买(选项:)在visionOS中不可用

如何在SWIFT中使用DiscardingTaskGroup获得任务结果

是否可以循环遍历SWIFT子类并访问它们的静态变量S?

Swift 扩展:通过方法重载增强现有类

try 从闭包访问返回的字符串时出现无法将类型 '()' 的返回表达式转换为返回类型 'String'编译器错误

物理主体未与 spritekit Swift 的网格图案上的纹理图像对齐

如何使用Swift宏和@Observable和@Environment?

设备上ScrollView为什么会将内容高度更改为随机值,而在预览上不会? - 优化后的标题:设备上ScrollView内容高度随机变化问题解决

@Binding 在@StateObject 和 View 上被发布了两次?

持久化字符串列表属性 RealmSwift

如何在 ZStack 中单独下移卡片?

如何从 LLDB 调用带有断点的 Swift 函数?

如何防止 UITableViewCell 移动(Swift 5)

使用 swift 运行 pod install 时出错

Swift - 获取本地日期和时间

Swift 自定义字体 Xcode

UICollectionView 自定义单元格在 Swift 中填充宽度

在 Swift 中为 UIPickerView 设置默认值?

使用相机进行人脸检测