为什么这段代码不起作用?
func function (param1 : Int, param2 : Int) -> Int { return $0 + $1 }
它会产生错误:
错误:匿名闭包参数未包含在闭包中
phelgo.. 9
看来你只能通过匿名闭包中的数字访问参数,而不是函数.
例如:
var sevenMultiplyedByThree: Int = { return $0 * 3 }(7)
此外,这仅适用于匿名参数,因此以下代码不起作用:
var sevenMultiplyedByThree: Int = { (namedParameter : Int) -> Int in return $0 * 3 }(7)
小智.. 5
Swift仅在没有参数声明的内联闭包内部自动提供“ Shorthand Argument”,匿名参数“ $”
您已声明接收参数param1和param2的函数。您可以使用它来发送函数作为闭包(块)或添加闭包执行。请参见下面的示例:
您的函数声明:
func function (param1 : Int, param2 : Int) -> Int { return param1 + param2 }
调用闭包的函数
func getSum(sumFunction:(Int, Int) -> (Int)) -> (Int) { return sumFunction(3,5) }
三种可能的关闭用法:
getSum(sumFunction: function) getSum { (param1, param2) -> (Int) in return param1 + param2 } getSum { return $0 + $1 }
在最后一个getSum中,您有没有参数声明的内联闭包,仅在此处可以用于$ 0 ..
$-用$ 0,$ 1等名称引用闭包参数的值。
$ 0 =参数1,$ 1 =参数2
看来你只能通过匿名闭包中的数字访问参数,而不是函数.
例如:
var sevenMultiplyedByThree: Int = { return $0 * 3 }(7)
此外,这仅适用于匿名参数,因此以下代码不起作用:
var sevenMultiplyedByThree: Int = { (namedParameter : Int) -> Int in return $0 * 3 }(7)
Swift仅在没有参数声明的内联闭包内部自动提供“ Shorthand Argument”,匿名参数“ $”
您已声明接收参数param1和param2的函数。您可以使用它来发送函数作为闭包(块)或添加闭包执行。请参见下面的示例:
您的函数声明:
func function (param1 : Int, param2 : Int) -> Int { return param1 + param2 }
调用闭包的函数
func getSum(sumFunction:(Int, Int) -> (Int)) -> (Int) { return sumFunction(3,5) }
三种可能的关闭用法:
getSum(sumFunction: function) getSum { (param1, param2) -> (Int) in return param1 + param2 } getSum { return $0 + $1 }
在最后一个getSum中,您有没有参数声明的内联闭包,仅在此处可以用于$ 0 ..
$-用$ 0,$ 1等名称引用闭包参数的值。
$ 0 =参数1,$ 1 =参数2