swift 。从 Int 获取 Int 的最佳方式?

标签 swift option-type

我刚开始学习 Swift,但我仍然对 Optionals 感到困惑。我想知道,最好的方法是什么,或者我应该遵循什么方法?

let arrayOptional : [Int?] = [25, 30, nil, 50, nil]
// Optional Binding
var sum = 0
for i in arrayOptional {
    if let temp = i {
        sum += temp
    }
}
sum = 0

// Forced Unwrapping
for i in arrayOptional {
    if i != nil {
        sum += i!
    }
}
sum = 0

// ?? operator
for i in arrayOptional {
    sum += i ?? 0
}

那么使用一种方法比使用另一种方法有什么好处吗?

最佳答案

你可以做什么,它是使用compactMap 函数,所以你将从arrayOptional 中获取非零值,然后使用reduce 函数得到结果

sum = arrayOptional.compactMap{ $0 }.reduce(0, +)

关于 swift 。从 Int 获取 Int 的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53117521/

相关文章:

Java 8 Streams 按可选属性分组

xcode - “CGFloat”无法转换为 ‘UInt8' 以及 Swift 和 Xcode 6 beta 4 的其他 CGFloat 问题

java - 有没有一种优雅的方法来打开包裹在 2 个嵌套的 Optionals 中的对象?

ios - Swift 可选 - 不同的解包方式

ios - 某些网站未在 Swift Xcode 9.2 中加载

xcode - Swift:条件绑定(bind)中的绑定(bind)值必须是可选的

haskell - 无法将预期类型 `Int' 与实际类型 `m0 Int' 匹配

swift - Swift 中的元组与结构

xcode 将捕获错误视为测试失败

swift - 执行 segue 后,文本字段永久位于标签中