数据类型后的问号(?)

Man*_*ani 9 variables swift

这两个陈述让我感到困惑

var optionalString: String? = "Hello"
Run Code Online (Sandbox Code Playgroud)

相反,我们可以写它

var optionalString: String = "Hello"
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别?

我们也可以在没有可选值的情况下执

var str: String = nil
str = "Hello"
Run Code Online (Sandbox Code Playgroud)

请澄清.

Tom*_*rdt 11

问号表示它可能包含值或根本没有值.没有它,它永远不可能nil.

var str: String = "Hello"
str = nil // Error
Run Code Online (Sandbox Code Playgroud)


Ben*_*n-G 5

问号(?)标记可选值。在Swift中,仅允许将可选值设置为nil

此功能的优点是不必检查nil所有非可选值。