Swift 4中的optionals和normal变量有什么区别?
var myName: String?
var myName: String!
var nyName: String
答案 0 :(得分:0)
在可能缺席值的情况下使用选项。可选项表示两种可能性:要么存在值,您可以打开可选项以访问该值,或者根本没有值。
下面的示例使用初始化程序尝试将String转换为Int:
let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// convertedNumber is inferred to be of type "Int?", or "optional Int"
如果您定义了一个可选变量而未提供默认值,则该变量将自动设置为nil:
var surveyAnswer: String?
// surveyAnswer is automatically set to nil
您可以使用if语句通过将可选项与nil进行比较来确定可选项是否包含值。您可以使用“等于”运算符(==)或“不等于”运算符(!=)执行此比较。
如果一个可选项有一个值,它被认为是“不等于”nil:
if convertedNumber != nil {
print("convertedNumber contains some integer value.")
}
// Prints "convertedNumber contains some integer value."
一旦确定可选项确实包含值,就可以通过在可选项名称的末尾添加感叹号(!)来访问其基础值。感叹号有效地说:“我知道这个选项肯定有价值;请使用它。“这被称为强制解包可选的值:
if convertedNumber != nil {
print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."