swift嵌套函数的使用

顾明思议嵌套函数就是函数内部定义函数,这种被放在函数体内定义的函数称为嵌套函数。 在默认情况下,嵌套函数对外部是隐藏的,嵌套函数只能在其封闭函数内有效,其封闭函数也可以返回嵌套函数,以便程序在其他作用域中使用嵌套函数。 例子:

//定义函数,该函数的返回值类型为(Int)->Int
func getMathFunc(#type:String) ->(Int)->Int{
    func square(val:Int) ->Int{
        return val*val;
    }
    
    func cube(val:Int)->Int{
        return val*val*val;
    }
    
    func factorial(val:Int) ->Int{
        var result = 1;
        for index in 2...val{
            result *= index
        }
        return result
    }
    
    switch(type){
        
        case "square":
            return square;
        case "cube":
            return cube;
        default:
            return factorial;
    }
    
    
}

//调用getMathFunc(),程序返回一个函数体  类型为 (Int)->Int

var mathFunc = getMathFunc(type:"square");
println(mathFunc(5) ) //25  得到square函数
mathFunc = getMathFunc(type:"cube");
println(mathFunc(5) ) //125 得到cube函数
mathFunc = getMathFunc(type:"factorial");
println(mathFunc(5) ) //120 得到factorial 函数

getMathFunc返回的是嵌套函数,但只要程序使用变量保存了getMathFunc的返回值,这些嵌套函数的作用域就会扩大,程序可以自由使用它们就像全局函数一样的。