var类型vs无声明

时间:2015-03-12 04:36:27

标签: swift

这个

有什么区别
var a = ClassA()

和这个

var a: ClassA = ClassA()

为什么一个与另一个?

1 个答案:

答案 0 :(得分:5)

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

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

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

var a: BaseType = DerivedType()

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

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