Swift call random function

The reason the three functions are called (and in the same order) is since you are causing them to be called when you put them in the array.

This:

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

Stores the return value of each function in the array since you are invoking them (by adding the '()').

So at this point randomFunc contains the return values rather than the function closures

Instead just store the functions themselves with:

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

Now if you want to call the selected method do not return its closure but invoke it:

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

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