闭包不能正常工作

时间:2015-06-06 17:43:50

标签: swift closures

我在这里有这个闭包,检查第一个值是否大于第二个值,如果为true则返回一个布尔值:

var bloco12: (Int, Int -> Bool) -> Bool = {

    return $1($0)
}

println(bloco12(32, {$0 > 10}))

但我了解到还有另一种方法可以使用符号> 简化此操作,如下所示:

bloco12(32, >)

但是这段代码不起作用,为什么?

1 个答案:

答案 0 :(得分:2)

请注意,>函数有两个参数并返回Bool。您的示例不起作用,因为您试图将>传递给期望只接受一个参数的函数的参数。我已经更改了您的示例,以展示如何通过>

var bloco12: (Int, Int, (Int, Int) -> Bool) -> Bool = {

    return $2($0, $1)
}

println(bloco12(32, 33, {$0 > $1}))  // prints "false"
println(bloco12(32, 33, >))          // prints "false"
println(bloco12(32, 33, <))          // prints "true"
println(bloco12(32, 33, ==))         // prints "false"