学习来自《极客学院:Swift中的函数》
工具:Xcode6.4
直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会
import Foundation /***********嵌套函数*************/
func getMathFunc(#type: String) -> (Int) -> Int{
func squre(num:Int) -> Int{
return num*num
}
func cube(num:Int) -> Int{
return num*num*num
}
switch(type){
case "square":
return squre
default:
return cube
}
}
var mathfunc = getMathFunc(type: "other")
println(mathfunc())
//由于嵌套函数在外函数内部只作用于该函数内部,所以使用闭包简化这个嵌套函数 /***********闭包*************/
/*
{ (形参列表) -> (返回值) in
可执行语句
}
*/
func getMathFunc_1(#type: String) -> (Int) -> Int{
// func squre(num:Int) -> Int{
// return num*num
// }
// func cube(num:Int) -> Int{
// return num*num*num
// }
switch(type){
case "square":
return {
(num:Int) -> Int in
return num * num
}
default:
return {
(num:Int) ->Int in
return num * num * num
}
}
}
var mathfunc_1 = getMathFunc_1(type: "other")
println(mathfunc_1())
//利用上下文推断类型
var squre1: (Int) -> Int = {(num) in return num*num }
println(squre1())
var squre2: (Int) -> Int = {num in return num*num }
println(squre2())
//省略形参名,通过$0,$1...来引用第一个、第二个参数
var squre3: (Int) -> Int = {$ * $}
println(squre3()) //闭包的经典使用
var result: Int = {
var result =
for i in ...${
result *= $
}
return result
}(,)
println(result) //尾随闭包
func someFunction(num:Int,fn: (Int)->()){
//执行代码
}//第一个参数为整型,第二个参数为闭包
//调用这个函数: someFunction(20,{})
//使用尾随闭包调用函数的格式:someFunction(20){} //捕获上下文中的变量或者常量
func makeArr(ele:String) ->() ->[String]{
//创建一个不包含任何元素的数组
var arr: [String] = []
func addElement() -> [String]{
//向arr数组中添加一个元素
arr.append(ele)
return arr
}
return addElement
}