这里的简单问题。我该如何工作?我知道我可以单独做每一个,但是如何做到这一点而不会出现这个错误。
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
}
transfer(label: zero.1, one.1, two.1...etc)
答案 0 :(得分:3)
您想要的是“Variadic Parameters”。在String参数类型后添加三个点。例如
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)
答案 1 :(得分:0)
此错误是因为您传递的错误如下所示:transfer(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 ]
它产生相同的输出。