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

number = Int()

那么它仍然具有 0 值。我什么都不想要,一个不存在的值(value)。

最佳答案

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

要创建一个可以设置为 nil 的变量,您需要在末尾使用 ?! (我将在后面讨论区别)显式地编写类型名称。

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

var myInt: Int

然后你添加一个 ? :
var myInt: Int?

然后,您可以将 myInt 设置为 nil ,或者您想要的任何值:
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 的属性/方法时,都需要在末尾添加一个问号。这称为“解包可选类型”。

带有 ! 后缀的类型称为“隐式解包可选类型”。使用这些类型时,您不需要解开它。但是,如果 myIntnil ,则会出现错误!这不会发生在 ? 类型上,因为如果 nilmyInt ,整个表达式只会返回 nil

这是我认为您第一次使用可选项时应该注意的事情。

关于swift - int 没有值(将 int 设置为无值),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37773208/

10-09 09:14
查看更多