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...
但那只是写法上的不同...两者意思相同...
在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...
但那只是写法上的不同...两者意思相同...