书上是这么说的:
“在if语句中,条件必须是一个布尔表达式——这意味着像if score { ... }这样的代码将报错,而不会隐形地与 0 做对比。
你可以一起使用if和let来处理值缺失的情况。这些值可由可选值来代表。一个可选的值是一个具体的值或者是nil以表示值缺失。在类型后面加一个问号来标记这个变量的值是可选的。”
“var optionalString: String? = "Hello"
print(optionalString == nil)
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, \(name)"
}”
对于if let name = optionalName 感觉不是布尔判断,该怎么理解这句
if let name = optionalName
你这样念:判断optionalName『包含值』的状态是true还是false?true话把值取出来放到name里。
不会swift
说一点你自己测试一下
let name = optionalName
这个语句,先是声明,然后赋值。
通常情况下,赋值并非一定成功的,所以也就存在了bool的结果。
那么,你可以测试一下optionalName为何值时赋值不成功。
参考
using-if-let-with-many-expressions