var类型vs无声明

4th*_*ace 0 swift

这有什么区别

var a = ClassA()
Run Code Online (Sandbox Code Playgroud)

还有这个

var a: ClassA = ClassA()
Run Code Online (Sandbox Code Playgroud)

为什么一个与另一个?

jmc*_*ney 5

我不是Swift开发人员,但我确信它在这方面的运作方式与C#这样的语言相同.

在第一种情况下,变量的类型是从用于初始化它的表达式的类型推断出来的.a因此,您的变量属于类型ClassA,因此可以引用该类型或从中派生的任何对象.在第二种情况下,您指定变量是ClassA显式类型而不是允许它被推断.

在第二种情况下,注释是多余的,因为指定的类型与无论如何推断的类型相同.如果这些类型不同,那么它是值得的,例如

var a: BaseType = DerivedType()
Run Code Online (Sandbox Code Playgroud)

在这种情况下,变量使用一个类型的对象进行初始化,但该变量被指定为更通用的类型.

如果你在没有初始化的情况下声明变量,那么你也需要一个注释,因为没有初始化表达式来推断变量的类型.

  • 你的答案中的所有内容都在于:Swift与其他语言没有任何不同.还有使用int文字创建float或double的相当常见的用例,例如`var a = 1` vs`var a:Double = 1`,这在其他地方也是如此. (2认同)