Swift闭包为什么调用函数return出错?
Swift Closure why does calling function return error?
刚刚学习闭包和嵌套函数。给出下面的嵌套函数:
func printerFunction() -> (Int) -> () {
var runningTotal = 0
func printInteger(number: Int) {
runningTotal += 10
println("The running total is: \(runningTotal)")
}
return printInteger
}
为什么调用func本身有错误,而我把func赋值给常量却没有错误? printAndReturnIntegerFunc(2) 将 2 Int 作为参数传递到哪里以获得 return 值?
printerFunction(2) // error
let printAndReturnIntegerFunc = printerFunction()
printAndReturnIntegerFunc(2) // no error. where is this 2 going??
(1) printerFunction
的函数签名是 () -> (Int) -> ()
这意味着它不带参数和 returns 另一个函数,这就是为什么当你试图调用 printerFunction(2)
带有参数会给你一个错误。
(2) 而返回函数的签名是(Int) -> ()
,这意味着它接受一个Int参数和returns Void
。所以 printAndReturnIntegerFunc(2)
有效
首先你在这里得到错误 printerFunction(2)
因为 printerFunction
不能接受任何参数,如果你想给出一个参数那么你可以这样做:
func printerFunction(abc: Int) -> (Int) -> (){
}
这会很好用:
printerFunction(2)
之后,您将该函数的引用提供给另一个变量,如下所示:
let printAndReturnIntegerFunc = printerFunction()
表示printAndReturnIntegerFunc
的类型是这样的:
这意味着它接受一个 Int
并且它将 return 无效所以这将起作用:
printAndReturnIntegerFunc(2)
刚刚学习闭包和嵌套函数。给出下面的嵌套函数:
func printerFunction() -> (Int) -> () {
var runningTotal = 0
func printInteger(number: Int) {
runningTotal += 10
println("The running total is: \(runningTotal)")
}
return printInteger
}
为什么调用func本身有错误,而我把func赋值给常量却没有错误? printAndReturnIntegerFunc(2) 将 2 Int 作为参数传递到哪里以获得 return 值?
printerFunction(2) // error
let printAndReturnIntegerFunc = printerFunction()
printAndReturnIntegerFunc(2) // no error. where is this 2 going??
(1) printerFunction
的函数签名是 () -> (Int) -> ()
这意味着它不带参数和 returns 另一个函数,这就是为什么当你试图调用 printerFunction(2)
带有参数会给你一个错误。
(2) 而返回函数的签名是(Int) -> ()
,这意味着它接受一个Int参数和returns Void
。所以 printAndReturnIntegerFunc(2)
有效
首先你在这里得到错误 printerFunction(2)
因为 printerFunction
不能接受任何参数,如果你想给出一个参数那么你可以这样做:
func printerFunction(abc: Int) -> (Int) -> (){
}
这会很好用:
printerFunction(2)
之后,您将该函数的引用提供给另一个变量,如下所示:
let printAndReturnIntegerFunc = printerFunction()
表示printAndReturnIntegerFunc
的类型是这样的:
这意味着它接受一个 Int
并且它将 return 无效所以这将起作用:
printAndReturnIntegerFunc(2)