在为正确输出数据而开发一些调试功能时,我遇到了元组数组的问题。显然我不能声明包含灵活数据类型和大小的元组数组。
我想支持各种类型的元组数组,比如
[(String, Int, Int, String)]
和 [(Int, Int, Bool)]
,不只是一个。
这是我目前的尝试,但我无法声明元组数组
(第二个for循环的计数器似乎也不正确?)
func debugData(names: [String], data: [(*magic tupel*)] ) {
var debugLine = ""
for line in 0..<data.count {
for i in 0..<(data[line].count) {
debugLine += "\(names[i])=\(data[line].i) "
}
print(debugLine)
debugLine = ""
}
}
我正在尝试像这样将两个数组放在一起:
["Name", "Age", "SexM"]
和 [("Alex", 5, true), ("Lisa", 7, false), ("Max", 9, true)]
.所需的输出(对于第一个元素)类似于 "Name=Alex, Age=5, SexM=true"
这将是两个数组的组合。
因为我可以简单地选择 Array<(String, Int, Bool)>
在函数的声明中,至少在上面的示例中,但我希望此函数适用于所有类型的数据 - 具有各种数组大小和灵活的数据类型...
我想它并没有那么复杂,我只是 Swift 的新手。
最佳答案
元组是不合适的,因为您不能以通用方式声明元组。
一个可能的解决方案是将 data
声明为 CustomStringConvertible
的数组而不是元组。
好处是您可以传递任何支持字符串插值的类型,并且数组中的项数是可变的。
func debugData(names: [String], data: [[CustomStringConvertible]] ) {
var debugLine = ""
for line in data {
for i in 0..<line.count {
debugLine += "\(names[i])=\(line[i]) "
}
print(debugLine)
debugLine = ""
}
}
debugData(names: ["Name", "Age", "SexM"], data: [["Alex", 5, true], ["Lisa", 7, false], ["Max", 9, true]])
关于arrays - 具有可变内容类型和长度的元组数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57348459/