Writing equivalent closures with simplified code
It is possible to omit the type for the closure's parameter and return type. The following lines show a simplified version of the previously shown code that generates the same result. Note that the closure code is really simplified and doesn't even include the return statement because it uses implicit return. Swift evaluates the code we write after the in
keyword and returns its evaluation as if we included the return statement before the expression. Swift infers the return type. We just have to replace the existing code for the filteredBy
method in the NumbersWorker
class with the new code. The code file for the sample is included in the swift_3_oop_chapter_07_10
folder:
open func filteredBy(condition: (Int) -> Bool) -> [Int] {
return numbersList.filter({
(number) in condition(number)
})
}
We can go a step further and use the argument shorthand notation. This way, the closure...