Arrays 调用中的额外参数

Arrays 调用中的额外参数,arrays,swift,string,tuples,Arrays,Swift,String,Tuples,这里有一个简单的问题。我该怎么做?我知道我可以分别做每一件事,但我如何做到这一点而不出现错误 var zero = (prob: 0.2, label: "Dog") var one = (prob: 0.3, label: "Cat") var two = (prob: 0.2, label: "Fish") Etc var stringArray = Array<String>() Func transfer(label: String) -> Array<Any

这里有一个简单的问题。我该怎么做?我知道我可以分别做每一件事,但我如何做到这一点而不出现错误

var zero = (prob: 0.2, label: "Dog")
var one = (prob: 0.3, label: "Cat")
var two = (prob: 0.2, label: "Fish")
Etc

var stringArray = Array<String>()

Func transfer(label: String) -> Array<Any> {
stringArray.append(label)
return stringArray

此错误是因为您正在向
传输(label:)
调用传递“额外参数”,正如您所定义的,该调用只接收一个参数。将其更改为:

var zero = (prob: 0.2, label: "Dog")
var one = (prob: 0.3, label: "Cat")
var two = (prob: 0.2, label: "Fish")

var stringArray = [String]()

func transfer(label: String) -> [String] {
    stringArray.append(label)
    return stringArray
}

transfer(label: zero.1)
transfer(label: one.1)
transfer(label: two.1)
您也可以这样做:

var zero = (prob: 0.2, label: "Dog")
var one = (prob: 0.3, label: "Cat")
var two = (prob: 0.2, label: "Fish")

var stringArray = [ zero.1, one.1, two.1 ]

它产生相同的输出。

您想要的被称为“”。在字符串参数类型后添加三个点。比如说

func transfer(labels: String...) -> [String] {
   return labels
}
// you can now call
transfer(labels: zero.1, one.1, two.1)
如果您只想在数组中包装字符串,那么最好使用数组文本

var labels = [zero.1, one.1, two.1]
您还可以将元组转换为如下所示的字符串数组

func transfer(tuples: (Double,String)...) -> [String] {
   return tuples.map {$0.1} // which is a shorthand for {tuple in tuple.1}
}
transfer(tuples: zero, one, two, three)
func transfer(tuples: (Double,String)...) -> [String] {
   return tuples.map {$0.1} // which is a shorthand for {tuple in tuple.1}
}
transfer(tuples: zero, one, two, three)