swift - 为什么我可以使用常量初始化作为 if 条件?

标签 swift if-statement initialization conditional-statements

在阅读官方 Apple 指南时我发现了这个

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello \(name)"
}

有一个常量声明和赋值,其中我 — 作为初学者 — 期望表达式返回 boolean 。但这个的条件if声明似乎得到true作为值,因为正在执行括号内的代码。

常量的初始化是否返回 boolean值或 if 的东西语句可以用作条件吗?

最佳答案

这称为可选绑定(bind)。引用基础知识 -> Optionals -> Swift 语言指南的可选绑定(bind)部分。

You use optional binding to find out whether an optional contains a value, and if so, to make that value available as a temporary constant or variable. Optional binding can be used with if and while statements to check for a value inside an optional, and to extract that value into a constant or variable, as part of a single action.

这个if let 构造的作用是检查someOptional 是否存在。如果它不是 nil/.None 那么它会将可选值“绑定(bind)”到常量。

if let constantName = someOptional {
    ...
}

这可以被认为是:

if someOptional != nil {
    let constantName = someOptional!
    ....
 }

关于swift - 为什么我可以使用常量初始化作为 if 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35046489/

相关文章:

Swift:如何访问 "_"参数的值?

swift - Swift 中的 Foundation.Data 内存泄漏

ios - WKWebView 中的 EXC_BAD_ACCESS 和/或 EXC_BREAKPOINT - 可能的更改以快速修复

java - 通过 Spring 初始化我的工厂

coding-style - 简短的变量声明会导致Go中的代码结构不良吗?

Swift 3 单元测试抛出编译错误 "Cannot convert value ' Type' to 'Type' "

ios - 如何将 currentPage 从 UIScrollView 传递到 newViewController

Java 无限循环

c# - 异常或 If/Else 语句

perl - 如何使用 Perl 的三元条件运算符构造单词的复数形式?