如何写下缩短条件?

时间:2019-02-11 10:13:18

标签: swift sprite-kit

有人知道如何以简化形式编写以下代码吗?

if self.atPoint(locationUser) == blueMarkArray[0] || self.atPoint(locationUser) == blueMarkArray[1] || self.atPoint(locationUser) == blueMarkArray[2] || self.atPoint(locationUser) == blueMarkArray[3] || self.atPoint(locationUser) == blueMarkArray[4] || self.atPoint(locationUser) == blueMarkArray[5] || self.atPoint(locationUser) == blueMarkArray[6]{

            print("its here")
        }

此外,我不想提交blueMarkArray数组中固定数量的元素。 应该尽可能地可变,因为例如它可以包含4个元素,但也可以包含12个元素。

对于每个答案我都很感谢。

编辑:

如果我要编写以下内容,如何访问找到的元素:someNode.position = elementOfMarkArray.position

3 个答案:

答案 0 :(得分:3)

使用数组的contains方法

if (blueMarkArray.contains(self.atPoint(locationUser))) {
   //
}

或者,如果像示例一样只需要检查索引6,请使用

if (blueMarkArray[0...6].contains(self.atPoint(locationUser))) {
   //
}

如果要获取元素的索引,则可以使用firstIndex个方法中的lastIndex

if let index = blueMarkArray.firstIndex(of: self.atPoint(locationUser)) {
   //
}

答案 1 :(得分:1)

您应该简单地使用contains的{​​{1}}方法,如果数组中的任何元素等于Array,它将返回true。

self.atPoint(locationUser)

如果还需要访问与要查找的对象/值匹配的元素,则可以使用if blueMarkArray.contains(self.atPoint(locationUser)) { print("it's here") } first(where:)

firstIndex(of:)

if let location = blueMarkArray.first(where: {$0 == self.atPoint(locationUser)}) {
    someNode.position = location.position
}

答案 2 :(得分:1)

您可以使用array's方法contains

if blueMarkArray.contains(self.atPoint(locationUser)) {
    print("its here")
}