我在这里有这个闭包,检查第一个值是否大于第二个值,如果为true则返回一个布尔值:
var bloco12: (Int, Int -> Bool) -> Bool = {
return $1($0)
}
println(bloco12(32, {$0 > 10}))
但我了解到还有另一种方法可以使用符号> 简化此操作,如下所示:
bloco12(32, >)
但是这段代码不起作用,为什么?
答案 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"