我在谷歌上搜索了一段时间,每个教程都教我创建一个数组,你只需执行以下操作:
var persons = [String]
但我正在从 swift code 转向 iOS 开发学习 Material ,现在无处不在
var persons = [String]()
为什么我们最后需要那些大括号?
最佳答案
您似乎混淆了两个概念:变量声明和变量赋值。
要在 Swift 中声明一个空数组,您必须明确说明该数组可以容纳哪些类型。您可以使用长手定义来执行此操作:
var persons: Array<String>
或者速记语法(首选):
var persons: [String]
请注意使用冒号“:”而不是等号“=”。
这两个都在说“我正在声明一个名为‘persons’的变量(不是常量)的存在,它将是一个充满字符串的可变数组。不过现在它是未定义的。”
在 Obj-C 中,您可以将任何类型的对象放入 NSArray 中,这意味着您无法真正确定从其中得到什么。以这种方式声明数组内容是 Swift 的类型安全功能之一。您可以确信 persons
只会包含 String
实例。
要分配一个值给你的变量,这意味着它不仅有一个定义,而且在内存中有一个有效的对象分配给它,你必须实际初始化数组:
var persons = [String]()
这本质上是一种初始化空数组的简写方法,该空数组将包含特定类型,而无需将任何参数传递给 init: 方法。在此之后,persons
实际上有一个值,它是一个完全空的数组,只允许包含字符串。
或者,Swift 的数组类型有一个第二个初始化器,可以让你传递参数:
init(count: Int, repeatedValue: T)
您可以使用它来创建一个带有设置长度和初始值的数组:
let immutableBobsArray = Array(count: 3, repeatedValue: "Bob")
println(\(immutableBobsArray)) \\ ["Bob", "Bob", "Bob"]
参见 "Collection Types"在 Apple 的 Swift 编程指南中,还有 the Array entry in the Swift Standard Library
关于ios - 为什么在 swift 中数组声明的末尾需要大括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28230297/