gpt4 book ai didi

swift - 使用 typealias 来保存数组的模板

转载 作者:搜寻专家 更新时间:2023-11-01 07:11:41 26 4
gpt4 key购买 nike

我真的只是加入这个社区来寻求解决一个特定问题的帮助,特别是关于如何声明一个以特定顺序保存各种信息类型的类型。对于上下文,我有下面使用的代码示例。

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。橡木

最佳答案

固定长度的值集合是元组,而不是数组。你的意思是这个(注意括号,而不是方括号)。

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!")
}
}
}

元组往往相当不灵活。它们对于快速、一次性的匿名类型(特别是作为返回值)很有用,但是当您在它们上放置类型别名时,您几乎肯定打算使用结构。

关于swift - 使用 typealias 来保存数组的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44580167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com