2015-02-24 37 views
2

使用Swift 1.2在声明一个数组时是否存在[String][(String)]之间的差异,还是它们是一样的?Swift 1.2数组声明,额外的括号?

var testArray_001: [String] = []  // Declaration = [String] 
var testArray_002: [String] = Array() // Declaration = [String] 
var testArray_003 = [String]()  // Declaration = [(String)] 

回答

2

没有区别。 (String)形式实际上意味着元组,其值为String,其类型为,但它相当于只是说a String

例如,考虑以下的数组:

var array = [String]() 

可以追加字符串元素照例:

array.append("raw string") 

但也可以添加含有一个字符串值的元组:

let tuple = (namedValue: "from tuple") 
array.append(tuple) 

请注意,等价不会停在这里。如果你有一个函数/方法接受-n参数:

func aFunc(#param1: Int, #param2: String, #param3: Double) {} 

调用它时,你可以提供的参数列表:

aFunc(param1: 1, param2: "text", param3: 3.14) 

,但你也可以组参数为元组,而只是把它功能

let params = (param1: 1, param2: "text", param3: 3.14) 
aFunc(params) 
+0

谢谢安东尼奥,那就是我刚才的想法。我注意到'var tupleArray_002 = [(Int,String)]()''声明'[((Int,String))]''和var'tupleArray_002 = [Int,String] )]'所以我开始认为我在看一个元组包装器。再次感谢澄清,非常感谢。 – fuzzygoat 2015-02-24 10:55:14

+0

只是好奇,你可以得到元组函数参数列表的工作,我已经在这里试过,我得到一个错误传递元组到函数(根据你的最后一行) – fuzzygoat 2015-02-24 11:31:59

+0

哪个错误?我已经添加了函数到我的答案,也许你错过了其签名的外部名称 – Antonio 2015-02-24 12:23:47