以下是否有任何区别?
var array1_OfStrings = [String]()
var array2_OfStrings: [String] = []
var array3_OfStrings: [String]
Playground中的测试显示1和2相同,但3表现不同。
有人可以解释我的区别吗?还有什么是声明String
空数组的首选方法?
答案 0 :(得分:4)
前两个具有相同的效果。
声明变量array1_OfStrings
,让它选择类型本身。当它看到[String]()
时,它巧妙地知道这是字符串的类型数组。
您将变量array2_OfStrings
设置为字符串的类型数组,然后通过[]
这是不同,因为您只是告诉您希望array3_OfStrings
是字符串的类型数组,但不会给它一个初始值。
我认为建议使用第一个,因为The Swift Programming Language会更频繁地使用它。
答案 1 :(得分:3)
虽然我可能会迟到,但有一件事需要说。
第一个选项将array1_OfStrings
设置为字符串数组
另一个选项告诉array1_OfStrings
是字符串数组,然后将其设置为空。
虽然这可能是一个非常小的差异,但在编译时你会注意到它。对于第一个选项,编译器将自动尝试找出array1_OfStrings
的类型。第二个选项不会这样做,你会让编译器知道这实际上是字符串数组并完成了交易。
为什么这很重要?看看以下链接: https://thatthinginswift.com/debug-long-compile-times-swift/
正如您所看到的,如果您没有声明可能影响构建性能的变量类型很多。