Swift 类型为vs而不为的var声明

Swift 类型为vs而不为的var声明,swift,Swift,这两者有什么区别 var a = ClassA() 还有这个 var a: ClassA = ClassA() 为什么一种语言与另一种语言不同?我不是一个敏捷的开发人员,但我相当肯定,在这方面,它的运行方式与C#等语言相同 在第一种情况下,根据用于初始化变量的表达式的类型推断变量的类型。因此,您的a变量属于ClassA类型,因此可以引用属于该类型或从该类型派生的任何对象。在第二种情况下,您显式地指定变量类型为ClassA,而不允许对其进行推断 在第二种情况下,注释是多余的,因为指定的类型与将

这两者有什么区别

var a = ClassA()
还有这个

var a: ClassA = ClassA()

为什么一种语言与另一种语言不同?

我不是一个敏捷的开发人员,但我相当肯定,在这方面,它的运行方式与C#等语言相同

在第一种情况下,根据用于初始化变量的表达式的类型推断变量的类型。因此,您的
a
变量属于
ClassA
类型,因此可以引用属于该类型或从该类型派生的任何对象。在第二种情况下,您显式地指定变量类型为
ClassA
,而不允许对其进行推断

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

var a: BaseType = DerivedType()
在这种情况下,使用一种类型的对象初始化变量,但将变量指定为更通用的类型


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

我不是一个快速开发人员,但我相当肯定,在这方面,它的操作方式与C#等语言相同

在第一种情况下,根据用于初始化变量的表达式的类型推断变量的类型。因此,您的
a
变量属于
ClassA
类型,因此可以引用属于该类型或从该类型派生的任何对象。在第二种情况下,您显式地指定变量类型为
ClassA
,而不允许对其进行推断

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

var a: BaseType = DerivedType()
在这种情况下,使用一种类型的对象初始化变量,但将变量指定为更通用的类型


如果您在声明变量时没有对其进行初始化,那么您也需要一个注释,因为没有初始化表达式来推断变量的类型。

Apple出于某种原因调用这些表达式,而不是更熟悉的“类型签名”或“数据类型”。可能是因为“数据类型”指的是类型本身,而不是用于声明它的符号。出于某种原因,苹果称这些为“类型签名”或“数据类型”。可能是因为“数据类型”指的是类型本身,而不是用来声明它的符号。还有一个相当常见的使用int文本创建float或double的用例,例如
var a=1
vs
var a:double=1
,这在其他地方也同样适用。您的答案中的所有内容都很准确:Swift与这里的其他语言没有任何不同。还有一种相当常见的使用int文本创建浮点或double的用例,例如
var a=1
vs
var a:double=1
,在其他地方同样适用。