遍历多个结构的最简单方法?

时间:2018-06-20 10:49:53

标签: arrays swift

希望通过使用结构变量中的每个变量来增加结构的多个数组的数量。谢谢!

# Points array
V=np.array([-1/2, 1/2, 3/2, 5/2, 7/2, 9/2])

# Lagrange Interpolant
D=np.ones_like(V);

# Calculation
for n,i in enumerate(V):
    for m,j in enumerate(V):
        # This should exist otherwise we divide by zero
        if m!=n:
            D[n] *= (i-j)

# Invert Array
D=1/D

1 个答案:

答案 0 :(得分:1)

只需使用嵌套循环,外部循环在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)
        }
    }
}