我想创建一个没有值的Int(已经存在的变量)。如果我这样做;
number = Int()
然后它仍然具有值0
。我什么都不想,一个不存在的价值。
答案 0 :(得分:13)
每个类型实际上都可以设置为空值nil
!
要创建一个可以设置为nil
的变量,您需要使用?
或!
明确写出类型名称(我稍后会谈到差异) )最后。
例如,如果您想要Int
可以设置为nil
,请声明类型名称为的变量:
var myInt: Int
然后添加?
:
var myInt: Int?
然后,您可以将myInt
设置为nil
,或者您想要的任何值:
myInt = nil
myInt = 0
这个类型名称带?符号被称为"可选类型"在斯威夫特。
您不仅可以在变量和常量中使用选项,还可以在方法/函数签名中使用它:
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
,则会出错! ?
类型不会发生这种情况,因为如果nil
为myInt
,则整个表达式只会返回nil
。
这是我认为你第一次使用选项时应注意的事情。
答案 1 :(得分:0)
您需要一个可选Int
。通过提出问题'?'标记你将nil初始化为可变。
var number: Int?
请参阅此链接以获取更多详细信息 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html