我想创建一个没有值的 Int(一个已经存在的变量)。如果我这样做;
number = Int()
那么它仍然具有
0
值。我什么都不想要,一个不存在的值(value)。 最佳答案
每种类型实际上都可以设置为空值,即 nil
!
要创建一个可以设置为 nil
的变量,您需要在末尾使用 ?
或 !
(我将在后面讨论区别)显式地编写类型名称。
例如,如果您想要一个可以设置为 Int
的 nil
,请使用类型名称声明一个变量:
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
的属性/方法时,都需要在末尾添加一个问号。这称为“解包可选类型”。带有
!
后缀的类型称为“隐式解包可选类型”。使用这些类型时,您不需要解开它。但是,如果 myInt
是 nil
,则会出现错误!这不会发生在 ?
类型上,因为如果 nil
是 myInt
,整个表达式只会返回 nil
。这是我认为您第一次使用可选项时应该注意的事情。
关于swift - int 没有值(将 int 设置为无值),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37773208/