func doMath
- как вы его определили - принимает закрытие в качестве первого аргумента и два целых числа в качестве второго и третьего аргумента.Поэтому вы называете его как
doMath({
(m1:Int, m2:Int) -> () in
print(m1 * m2)
}, 5, 8)
или с сокращенными параметрами:
doMath({ print($0 * $1) }, 5, 8)
Если вы измените определение функции, чтобы принять замыкание в качестве последнего параметра
func doMath(_ i1: Int, _ i2: Int, _ f:(_ i1 : Int, _ i2 : Int) -> ()) {
print("doing Math")
f(i1, i2)
}
тогда вы бы назвали его как
doMath(5, 8, { print($0 * $1) })
или, используя синтаксис «замыкающего замыкания»:
doMath(5, 8) { print($0 * $1) }