首页 > 解决方案 > 调用中的额外参数

问题描述

这里简单的问题。我该如何进行这项工作?我知道我可以分别做每一个,但我如何做到这一点而不会出现错误。

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)

标签: arraysswiftstringtuples

解决方案


你想要的是“<a href="https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID171" rel="nofollow noreferrer">可变参数”。在您的 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)

推荐阅读