Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 速记闭包不起作用_Swift_Closures - Fatal编程技术网

Swift 速记闭包不起作用

Swift 速记闭包不起作用,swift,closures,Swift,Closures,我这里有一个闭包,它检查第一个值是否大于第二个值,如果为true,则返回一个布尔值: var bloco12: (Int, Int -> Bool) -> Bool = { return $1($0) } println(bloco12(32, {$0 > 10})) 但我了解到,有另一种方法可以简化此过程,只需使用符号,如下所示: bloco12(32, >) 但是这段代码不起作用,为什么?请注意,函数接受两个参数并返回一个Bool。您的示例不起作用,因

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

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

    return $1($0)
}

println(bloco12(32, {$0 > 10}))
但我了解到,有另一种方法可以简化此过程,只需使用符号,如下所示:

bloco12(32, >)

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

请注意,
函数接受两个参数并返回一个
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"
var bloco12:(Int,Int,(Int,Int)->Bool)->Bool={
返回$2($0,$1)
}
println(bloco12(32,33,{$0>$1}))//打印“false”
println(bloco12(32,33,>)//打印“false”

println(bloco12(32,33,函数签名不匹配。
bloco12
接受一个
Int
和一个接受
Int
并返回一个
Bool
的闭包。你试图给它一个
Int
和一个需要两个参数并返回
Bool
@vacawama的函数,这很有趣……在许多教程中,它们都是一个fu要做到这一点,唯一使用symbol>的形式就是创建一个函数?
本身表示
(Int,Int)->Bool
。虽然有很多
函数。还有
(Double,Double)->Bool
(Float,Float)->Bool
但它们都接受2个参数并返回一个
Bool