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)