how to translate the abbreviation to ObjC (or better say how to solve your "average problem" in Objective-C), Andre Slotta answered perfectly. quick cuts are much more. I will try to answer the second part of your question, how does the concept work in quick
func reduce<T>(initial: T, @noescape combine: (T, Self.Generator.Element) throws -> T) rethrows -> T
To return the result of a multiple call are combined with the accumulated value, initialized initial and each element of "I", in turn, i.e. return combination (combination (... combination (combination (initial, independent [0]), self [1]), ... self [count-2]), self [count-1]).
let arr: Array<Int> = [1,2,3,4,5] let sum = arr.reduce(0) { (sum, i) -> Int in return sum + i } print(sum) // 15 // this is an quasi equivalent of var sum1 = 0 // ..... reduce(0).... arr.forEach { (elementValue) -> Void in sum1 = sum1 + elementValue // ...{ return sum + i } } print(sum1) // 15 reduce function will return accumulated inital value // reduce is part of SequenceType protocol, that is why let arr1 = ["H","e","l","l","o"," ","w","o","r","l","d"] let str = arr1.reduce("") { (str, s) -> String in str + s } // works the same way print(str) // "Hello world" // let have a litle bit more complex example, to see how powerful, useful and easy to use reduce can be let dict = arr1.reduce([:]) { (var dict, s) -> Dictionary<Int,String> in let i = dict.count dict.updateValue(s, forKey: i+1) return dict } print(dict) // [11: "d", 10: "l", 2: "e", 4: "l", 9: "r", 5: "o", 6: " ", 7: "w", 3: "l", 1: "H", 8: "o"]