TedNC TedNC - 7 months ago 40
Swift Question

Map a void (non-returning function) over an array with Swift

Title is self-explanatory, is there any way of mapping, for example, addGestureRecognizer over an array of UIGestureRecognizers. I've been fiddling around with variations of

recognizers.map(MyWebOutlet.addGestureRecognizer)


but since built-in map has to return another array in requires a function that returns some kind of value. Should I just wrap addGestureRecognizer in another returning function or is the another cleverer way?

Answer

map is designed to return an array from another array that has had a given transformation applied to it (by transforming each element). Therefore naturally the function that you pass to it has to return the transformed element.

In your case, you're not actually transforming the elements, you just want to use them in an argument of a function. To do this, you can use forEach.

recognizers.forEach(MyWebOutlet.addGestureRecognizer)