我真的只是加入了这个社区来获取一个特定问题的帮助,特别是如何声明一个按特定顺序包含各种信息类型的类型。对于上下文,我有我在下面使用的代码示例。
typealias Template = [String, Array<Any>, String, String]
这反过来将用于存储数据并在其他功能中对其进行过滤,如下所示......
var HamburgerToppings: [String] = []
var Salads: [String] = []
let Example: [Template] = [ABC, HamburgerToppings, XY, ZZ]
let Example2: [Template] = [DEF, Salads, GH, IJ]
var ExampleList: [Template] = [Example, Example2]
func DoTheThing() {
for Template in ExampleList {
if Template[0] == DEF {
print("SALADS!")
} else {
print("BURGERS!)
}
}
}
如果有人能弄明白我做错了什么,或者是否需要做出完全不同的声明,我将非常感谢你的建议。
非常感谢, -P。 OAK
答案 0 :(得分:1)
固定长度的值集合是元组,而不是数组。你的意思是这个(注意括号,而不是括号)。
typealias Template = (String, Array<Any>, String, String)
那就是说,我认为你的意思是:
typealias Template = (String, [String], String, String)
let hamburgerToppings: [String] = []
let salads: [String] = []
let example: Template = ("ABC", hamburgerToppings, "XY", "ZZ")
let example2: Template = ("DEF", salads, "GH", "IJ")
let exampleList: [Template] = [example, example2]
func doTheThing() {
for template in exampleList {
if template.0 == "DEF" {
print("SALADS!")
} else {
print("BURGERS!")
}
}
}
但是,你根本不应该在这里使用元组。这应该是一个结构,如下所示:
struct Template {
let identifier: String
let toppings: [String]
let something2: String
let something3: String
}
let hamburgerToppings: [String] = []
let salads: [String] = []
let example = Template(identifier: "ABC", toppings: hamburgerToppings, something2: "XY", something3: "ZZ")
let example2 = Template(identifier: "DEF", toppings: salads, something2: "GH", something3: "IJ")
let exampleList: [Template] = [example, example2]
func doTheThing() {
for template in exampleList {
if template.identifier == "DEF" {
print("SALADS!")
} else {
print("BURGERS!")
}
}
}
元组往往相当不灵活。它们对于快速的一次性匿名类型(特别是作为返回值)非常有用,但是当你在它们上面添加一个类型时,你几乎肯定会使用一个结构。
答案 1 :(得分:0)
您可以改为使用元组:
typealias Template = (String, Array<Any>, String, String)
...
let Example: Template = (ABC, HamburgerToppings, XY, ZZ)
...
func DoTheThing() {
for Template in ExampleList {
if Template.0 == DEF {
print("SALADS!")
} else {
print("BURGERS!)
}
}
}
元组
元组将多个值组合成一个复合值。价值 元组中的元组可以是任何类型,也不必相同 互相打字。