gpt4 book ai didi

arrays - 迭代多个结构数组的最简单方法?

转载 作者:行者123 更新时间:2023-11-28 14:35:00 25 4
gpt4 key购买 nike

希望通过多个结构数组递增,使用它们的变量之一作为每个循环的数量。谢谢!

struct Example {
var partOne: Int
var partTwo: Int
var partThree: Int
}

var one = Example(partOne: 10, partTwo: 11, partThree: 12)
var two = Example(partOne: 10, partTwo: 11, partThree: 12)

var arrayOfExamples = [one, two]

for i in 0...arrayOfExamples[0].partThree {
print(i)
}

//once i = 12, then

for i in 0...arrayOfExamples[1].partThree {
print(i)
}

最佳答案

只需使用嵌套循环,外层循环遍历 arrayOfExamples 的项目:

for item in arrayOfExamples {
for i in 0...item.partThree {
print(i)
}
}

通过使用 KeyPath,您可以编写一个函数来迭代具有调用者指定的属性的值:

func iterateOverKeyPath(array: [Example], keyPath: KeyPath<Example, Int>) {
for item in array {
for i in 0...item[keyPath: keyPath] {
print(i)
}
}
}

// iterate using partThree property
iterateOverKeyPath(array: arrayOfExamples, keyPath: \Example.partThree)

// now do the same for partTwo
iterateOverKeyPath(array: arrayOfExamples, keyPath: \Example.partTwo)

而且 Example struct 并没有什么特别之处,所以我们可以让这个泛型适用于任何类型:

func iterateOverKeyPath<T>(array: [T], keyPath: KeyPath<T, Int>) {
for item in array {
for i in 0...item[keyPath: keyPath] {
print(i)
}
}
}

关于arrays - 迭代多个结构数组的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50946451/

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