Swift调用随机函数

时间:2015-10-15 11:28:24

标签: ios swift function

我有3个不同的功能,我想随机调用其中一个。

    if Int(ball.position.y) > maxIndexY! {
        let randomFunc = [self.firstFunction(), self.secondFunction(), self.thirdFunction()]
        let randomResult = Int(arc4random_uniform(UInt32(randomFunc.count)))
        return randomFunc[randomResult]
    }

使用此代码我调用所有函数,顺序始终相同。我怎么办才能打电话给其中一个?

2 个答案:

答案 0 :(得分:5)

调用这三个函数(并以相同的顺序)的原因是,当您将它们放入数组时,它们会被调用。

此:

let randomFunc = [self.firstFunction(), self.secondFunction(), self.thirdFunction()]

存储数组中每个函数的返回值,因为您正在调用它们(通过添加“()”)。

所以此时randomFunc包含返回值而不是函数闭包

而只是将函数本身存储在:

[self.firstFunction, self.secondFunction, self.thirdFunction]

现在,如果你想调用selected方法,不要返回它的闭包,而是调用它:

 //return randomFunc[randomResult] // This will return the function closure 

 randomFunc[randomResult]() // This will execute the selected function

答案 1 :(得分:-1)

我希望它能起作用

{{1}}