Swift中数组声明的差异

时间:2015-08-13 19:15:30

标签: arrays swift nsmutablearray declaration

在Swift中声明时,var list = NSMutableArray()var list:NSMutableArray = []之间的区别是什么?

2 个答案:

答案 0 :(得分:2)

据我所知,没有有效的区别。

使用第一个语句,您正在使用Swift的类型推断功能。您创建一个类的实例,并从该实例的赋值到var,编译器推断出类型。

在第二个语句中,您明确定义了list的类型。 等号右侧的赋值现在实例化一个空的Swift数组,但由于NSMutableArray的显式类型,它将被转换为此类。 等号的正确表达与NSMutableArray()的表达方式相同,但是通过使用[],您可以使用智能速记选项来实例化NSMutableArray,其值为[2,1,4]或{{1} }等等。 感谢@Neo。

在第二个语句中,编译器不会抱怨将实例化留在右侧,它只是隐式地为零。另一方面,没有[someObject, someOtherObject]表达式的第一个语句是不可能的。

请记住,NSMutableArray()是Foundation框架中的一个类,主要用于Objective-C上下文,而Swift为这种列表提供了自己的集合类型。它们不一样,但是由编译器隐式地转换。

希望这能使事情变得清晰。

答案 1 :(得分:1)

就像JulianM所说,没有区别......两者都宣布/实例化NSMutableArray :-)

唯一存在的“差异”

var list = NSMutableArray()

这行代码声明了list并继承了他实例化的NSMutableArray的类型......

var list:NSMutableArray = []

虽然这行代码声明了列表AS NSMutableArray并将其实例化为NSMutableArray ...

但这仅仅是一种写作差异......两者的意思相同......