Functions may accept closures (or other functions) as parameters:
func foo(value: Double, block: () -> Void) { ... }
func foo(value: Double, block: Int -> Int) { ... }
func foo(value: Double, block: (Int, Int) -> String) { ... }
Trailing closure syntax
If a function's last parameter ...