在swift中使用哪个声明

Dra*_*lex 6 variables declaration swift

我真的不知道如何在Swift中声明我的变量,我有四个选项:

var value = 0.0 // I know this one declares value as a Double with the number 0.0
var value: Float = 0.0 // This one declares value as a Float with the number 0.0
var value: Float? // I really don't get the difference between this
var value: Float! // and this, I just know that both of them are used to declare a variable without a value, am I right ?
Run Code Online (Sandbox Code Playgroud)

我只是想声明一个不归因于值的浮点数,最好的方法是什么?

Rob*_*Rob 3

Float?是一个可选的。是Float!一个隐式展开的可选项。有关后者的详细信息,请参阅《Swift 编程语言:基础知识》隐式解包选项部分,其中显示:

\n
\n

[Optionals] 表示常量或变量允许有\xe2\x80\x9cno 值\xe2\x80\x9d。可以使用 if 语句检查可选值以查看值是否存在,并且可以使用可选绑定有条件地解包以访问可选\xe2\x80\x99s 值(如果存在)。

\n

有时,从 program\xe2\x80\x99s 结构中可以清楚地看出,在首次设置该值之后,可选值将始终具有一个值。在这些情况下,无需在每次访问可选\xe2\x80\x99s 值时检查和解开该值,因为可以安全地假定它始终具有值。

\n

这些类型的选项被定义为隐式展开的选项。您可以通过在要设为可选的类型后面放置感叹号 (String!) 而不是问号 (String?) 来编写隐式展开的可选类型。

\n

当首次定义可选值后立即确认可选\xe2\x80\x99s 值存在并且可以肯定地假定此后的每个点都存在时,隐式解包可选值非常有用。Swift 中隐式解包选项的主要用途是在类初始化期间,如无主引用和隐式解包可选属性中所述。

\n

隐式解包的可选值是幕后的普通可选值,但也可以像非可选值一样使用,而无需在每次访问可选值时解包。

\n
\n

您描述这value将是一个类属性。如果这是Float您始终在init方法中设置的,那么您根本不需要将其设为可选,因此您可以使用第二种语法。如果它是一个在任何时候都可能是nil或不是的变量nil,那么您可以将其设为可选(您的第三种语法)。但是,如果它是一个您无法在 中 设置的变量init,但是一旦您设置了它,从那时起它通常总是有一个值,您可能会倾向于隐式展开的可选(您的第四种语法)。

\n