Swift 中数组声明的差异

Differences in array declaration in Swift

在Swift中声明时var list = NSMutableArray()var list:NSMutableArray = []有什么区别?

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

在第一条语句中,您使用了 Swift 的类型推断功能。您创建了一个 class 的实例,并从将该实例赋值给 var 编译器推断类型。

在第二个语句中,您明确定义了 list 的类型。 等号右侧的赋值现在实例化一个空的 Swift 数组,但由于 NSMutableArray 的显式类型,它将被转换为这个 class。 等号的右表达式与 NSMutableArray() 的作用相同,但是通过使用 [] 你有一个聪明的 shorthand 选项来实例化 NSMutableArray 具有这样的值 [2,1,4][someObject, someOtherObject]等 感谢@Neo.

在第二条语句中,编译器不会抱怨将实例化留在右侧,它只是隐式为 nil。另一方面,没有 NSMutableArray() 表达式的第一个语句是不可能的。

请记住,NSMutableArray 是来自 Foundation 框架的 class,主要用于 Objective-C 上下文,而 Swift 为此提供了自己的集合类型种类列表。它们不相同,但由编译器隐式转换。

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

正如 JulianM 所说,没有区别...两者都在声明/实例化 NSMutableArray :-)

唯一的"difference"

var list = NSMutableArray()

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

var list:NSMutableArray = []

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

但那只是写法上的不同...两者意思相同...