我想创建一个没有值的Int(一个已经存在的变量)。如果我这样做;
number = Int()
则它仍然具有值CCD_ 1。我什么都不想要,一个不存在的价值。
每个类型实际上都可以设置为空值,也就是nil
!
要创建一个可以设置为nil
的变量,您需要在类型名称的末尾显式地写上?
或!
(稍后我将讨论其区别)。
例如,如果您想要一个可以设置为nil
的Int
,请声明一个类型名称为的变量
var myInt: Int
然后添加一个?
:
var myInt: Int?
然后,您可以将myInt
设置为0
0,或者您想要的任何值:
myInt = nil
myInt = 0
此类型名称带有-?符号在Swift中被称为"可选类型"。
您不仅可以在变量和常量中使用选项,还可以在方法/函数签名中使用选项:
func myUselessFunc(value: Int?) -> Int? {
return value
}
好的,那么!
和?
之间有什么区别?
!
的作用类似于Java和C#中的引用类型。而?
就像是!
的一个更安全的版本。
假设有一个可选的Int
,称为myInt
。您想访问它的description
。
如果myInt
被声明为let myInt: Int?
,则
myInt?.description
如果myInt
被声明为let myInt: Int!
myInt.description
请注意,使用问号,每次需要访问myInt
的属性/方法时,都需要在末尾添加一个问号。这被称为"展开可选类型"。
后缀为!
的类型称为"隐含展开可选类型"。使用这些类型时,不需要打开包装。但是,如果myInt
是nil
,则会出现错误!?
类型不会发生这种情况,因为如果myInt
是nil
,则整个表达式将仅返回nil
。
当你第一次使用期权时,我认为你应该注意这一点。
您需要一个可选的Int
。提出一个问题"?"用nil标记您初始化的可变变量。
var number: Int?
有关详细信息,请参阅此链接https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html