Swift中我们可以用typealias来为已经存在的类型重新定义名字的,通过命名可以使代码变得更加清晰。当然也可以给闭包类型定义一个新名字,给带有泛型的闭包重新定义名字的方式如下代码所示:

typealias Block<U> = (U, U) -> Bool

func compare<T: Comparable>(number1: T, number2: T, algorithm: Block<T>) -> Bool {
    return algorithm(number1, number2)
}

compare(number1: 10, number2: 20) {
    $0 < $1
}