问题1:如果let必须仅用于可选
问题2:对于问题1,如果是,是否"如果让"评估真或假或什么?因为我们在"如果条件"并且唯一的方式"如果条件"工作是评估真或假。这里的例子:
var something:String? = " Hello "
if let makeSomethingNew = something {
let final = makeSomethingNew + something
}
让makeSomethingNew =这里的评价为真?
答案 0 :(得分:2)
问题1
if let
被称为optional binding。
它仅适用于Optionals。以下代码将生成错误:
var str = "Hello, playground"
if let x = str {
print("success") // error: initializer for conditional binding must have Optional type, not 'String'
}
为什么呢?因为如果让仅用于选项,String
不是可选项。
问题2
是的,它评估是否已设置可选项,即具有值。
有关详细信息,请参阅this answer
其他问题:我们为什么这样做?
因为选项是否已设置(是否具有值)。我们只想做有价值的事情。如果他们没有价值,我们不想做任何事情(我们也不想崩溃)。
您还可以使用它来展开可选项。
var optionalString : String? = "hi"
if let unwraped = optionalString {
print (unwraped) // hi | easier to work with
print(optionalString) // Optional("hi") | not so easy to work with
}