我有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]
}
使用此代码我调用所有函数,顺序始终相同。我怎么办才能打电话给其中一个?
答案 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}}