在Swift中声明时,var list = NSMutableArray()
和var list:NSMutableArray = []
之间的区别是什么?
答案 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 ...
但这仅仅是一种写作差异......两者的意思相同......