arrays - 调用中的额外参数
问题描述
这里简单的问题。我该如何进行这项工作?我知道我可以分别做每一个,但我如何做到这一点而不会出现错误。
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)
解决方案
你想要的是“<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)
推荐阅读
- javascript - How to Bundle with Gulp + Rollup?
- javascript - Bootstrap 4 下拉菜单在数据表中不可见
- asp.net - Using SignalR via reflection
- iis - .Net Web api slow on server but fine locally
- python - Shifting Cells values in Python
- mysql - 在返回特定行的详细信息时对 sum() 进行 MySQL 查询
- mongodb - 数组中 ObjectId 的 $lookup 不起作用
- java - Apache POI SXSSF 在刷新行上显示 NullPointerException
- mysql - MySQL:删除基于 id 和其他列内容的所有记录
- linux - 在 Buster 上安装 Hyperion.ng - Raspberry Pi 4 (4 GB RAM) (Rev. 2020-02-13)