没有值的int(将int设置为no value)

Rap*_*arn 2 int integer swift swift2

我想创建一个没有值的Int(已经存在的变量).如果我这样做;

number = Int()
Run Code Online (Sandbox Code Playgroud)

那它还有价值0.我什么都不想,一个不存在的价值.

Swe*_*per 15

实际上每种类型都可以设置为空值nil!

要创建一个可以设置的变量nil,您需要在结尾处使用a ?!(稍后将讨论差异)明确地写入类型名称.

例如,如果您想要一个Int可以设置的nil,请声明一个类型名称为的变量:

var myInt: Int
Run Code Online (Sandbox Code Playgroud)

然后你添加一个?:

var myInt: Int?
Run Code Online (Sandbox Code Playgroud)

然后,您可以设置myIntnil或您想要的任何值:

myInt = nil
myInt = 0
Run Code Online (Sandbox Code Playgroud)

这个类型名称带?符号在Swift中称为"可选类型".

您不仅可以在变量和常量中使用选项,还可以在方法/函数签名中使用它:

func myUselessFunc(value: Int?) -> Int? {
    return value
}
Run Code Online (Sandbox Code Playgroud)

好的,那么!和之间的区别是?什么?

!就像Java和C#中的引用类型一样.而且?就像一个更安全的版本!.

假设有一个可选的Int被叫myInt.你想访问它description.

如果myInt被宣布为let myInt: Int?,

myInt?.description
Run Code Online (Sandbox Code Playgroud)

如果myInt被宣布为let myInt: Int!

myInt.description
Run Code Online (Sandbox Code Playgroud)

请注意,使用问号时,每次需要访问属性/方法时,都需要在末尾添加问号myInt.这称为"展开可选类型".

!后缀的类型称为"隐式解包可选类型".使用这些类型时,您无需打开它.但是,如果myIntnil,则会出错!这不会发生的?类型,因为整个表达式将只返回nil如果myIntnil.

这是我认为你第一次使用期权时应注意的事情.