这个
有什么区别var a = ClassA()
和这个
var a: ClassA = ClassA()
为什么一个与另一个?
答案 0 :(得分:5)
我不是Swift开发人员,但我确信它在这方面的运作方式与C#这样的语言相同。
在第一种情况下,变量的类型是从用于初始化它的表达式的类型推断出来的。因此,a
变量的类型为ClassA
,因此可以引用该类型或从中派生的任何对象。在第二种情况下,您明确指定变量是ClassA
类型,而不是允许它被推断。
在第二种情况下,注释是多余的,因为指定的类型与无论如何推断的类型相同。如果这些类型不同,那么它是值得的,例如。
var a: BaseType = DerivedType()
在这种情况下,变量正在使用一个类型的对象进行初始化,但该变量被指定为更通用的类型。
如果你在没有初始化的情况下声明变量,那么你也需要一个注释,因为没有初始化表达式来推断变量的类型。