Swift:打开选项变量的方式不同
有人能解释这两种展开变量的方法之间的区别吗: 第1版:Swift:打开选项变量的方式不同,swift,Swift,有人能解释这两种展开变量的方法之间的区别吗: 第1版: let myVariable : String? = "my name" let myNameVariable : String = myVariable! 第2版: let myVariable : String? = "my name" let myNameVariable : String! = myVariable 如果有人能解释一下这两种展开变量的方法之间的区别,我将不胜感激 let myVariable : String
let myVariable : String? = "my name"
let myNameVariable : String = myVariable!
第2版:
let myVariable : String? = "my name"
let myNameVariable : String! = myVariable
如果有人能解释一下这两种展开变量的方法之间的区别,我将不胜感激
let myVariable : String? = "my name"
let myNameVariable : String = myVariable!
这称为展开,从可选类型展开。
所以这里myNameVariable的类型是String
关于版本2
let myVariable : String? = "my name"
let myNameVariable : String! = myVariable
我不认为这是展开,而是类型转换,
所以这里myNameVariable的类型是字符串强>
与
let myNameVariable = myVariable as String!
更新:
主要区别
例1
let myVariable : String? = "my name"
var myNameVariable = myVariable!
//myNameVariable = nil //Error
var implUnwrapVar:String! = myVariable
implUnwrapVar = nil//OK
例2
let myVariable : String? = nil
//var myNameVariable = myVariable! //error
var implUnwrapVar:String! = myVariable // ok
如果
myVariable
为nil
,则当您使用myVariable强制展开时,版本1将崩溃当您尝试使用myNameVariable
时,code>和版本2将崩溃。根据apple文档:let assumedString:String!=“隐式展开的可选字符串。”。隐式unwrapped意味着您可以将其用作unwrapped。但是,请注意,您应该小心,因为如果它是var
,它可以为零。在第一种情况下,如何调用?请参阅更新代码,我认为这是主要区别。