Swift 中的利刃,函数和闭包
swift 发布于 2025年01月17日
函数的类型func add(left: Int, right:Int) -> Int { return left + right } (Int, Int) -> (Int) func buildSayHello() -> (String,String) -> String {
func hello(firstName:String, lastName:String) -> String {
return "Hello \(lastName) \(firstName)"
}
return hello
}
let hello = buildSayHello()
hello("John","Smith") func todo (tasks:String...) -> () {
for task in tasks {
println("* \(task)")
}
}
todo("exercise","study","sleep") 定义闭包
{() -> () in} {(param) -> returnType in
statements
} var numbers:Array<Int> = [3,5,4,2,1,8]
numbers.sort { (lhs, rhs) -> Bool in
return lhs < rhs
} 闭包的便捷操作
var numbers:Array<Int> = [3,5,4,2,1,8]
numbers.sort({ return $0 < $1 }) numbers.sort { return $0 < $1 }
如果你觉得这篇文章有帮助,还可以关注微信公众号 swift-cafe,会有更多我的原创内容分享给你~
本站文章均为原创内容,如需转载请注明出处,谢谢。
swift 发布于 2025年01月17日
函数的类型
每个函数都有它自己的函数类型,通过它的参数和返回值来确定。比如这个函数:
它的函数类型为:
我们刚刚了解了函数类型的概念,它可以用来作为参数和返回值的类型来使用。
将函数作为参数和返回值传递下面这个函数的返回值仍然是一个函数,并且作为返回值的这个函数可以赋值给一个变量并调用:
func hello(firstName:String, lastName:String) -> String {
return "Hello \(lastName) \(firstName)"
}
return hello
}
let hello = buildSayHello()
hello("John","Smith")
是不是有点奇妙的感觉了? 对,函数本身也是一个对象实例。
带有可变参数的函数函数还可以接收任意数量的参数,通过 ...
来表示,然后我们就可以在函数体中用数组的形式访问这个函数了:
for task in tasks {
println("* \(task)")
}
}
todo("exercise","study","sleep")
我们刚说过,函数也是一种特殊的闭包,那么我们再来看下定义闭包的语法:
闭包的定义包含在一对大括号中,其中 () ->()
定义了函数的参数类型和返回值, ->
的左边括号中是参数列表,右边是返回值。然后用 in
关键字将闭包的头部和主体分隔开来。对闭包定义的一个描述:
statements
}
比如我们 Array
的 sort
方法接收的就是一个闭包参数:
numbers.sort { (lhs, rhs) -> Bool in
return lhs < rhs
}
闭包还可以用参数的位置的形式来应用参数 ($0,$1,$2),比如还是上面那个数组例子:
numbers.sort({ return $0 < $1 })
再有,如果闭包作为参数列表中的最后一个参数,你可以直接忽略它外面的括号,就像这样:
如果你觉得这篇文章有帮助,还可以关注微信公众号 swift-cafe,会有更多我的原创内容分享给你~
本站文章均为原创内容,如需转载请注明出处,谢谢。
关注微信公众号
发现更多精彩 swift-cafe |