Swift高级开发语言--函数嵌套

//@H_404_3@ 函数嵌套:函数作用域中定义了另外一个函数,内层函数的作用域中可以使用外层函数的参数
func helloLanou(var@H_404_3@ num@H_404_3@: Int){
    num++
    func hello23(){
        num++
    }
    hello23()
    num
}

helloLanou(10@H_404_3@)


func hellolanou2()@H_404_3@ ->@H_404_3@ ((Int) -> String)@H_404_3@ { func@H_404_3@ hanshu@H_404_3@ (i:Int)@H_404_3@ ->@H_404_3@ String
    {
        return@H_404_3@ "\(i)"@H_404_3@
    }
    return@H_404_3@ hanshu
}

hellolanou2()
let@H_404_3@ hanshu = hellolanou2()
let@H_404_3@ i = hanshu(1@H_404_3@)

//@H_404_3@ 声明一个函数,实现功能:传入"+"@H_404_3@,"-"@H_404_3@,"*"@H_404_3@,"/"@H_404_3@的字符串,返回对应运算的函数:"+"@H_404_3@-----返回int + int = int

func jjcc (str:String)@H_404_3@ ->@H_404_3@ ((Int,Int) -> Int)@H_404_3@? { func@H_404_3@ jjcc1@H_404_3@ (num1:Int,num2:Int)@H_404_3@ ->@H_404_3@ Int {
        return@H_404_3@ num1 + num2
    }
    func jjcc2 (num1:Int,num2:Int)@H_404_3@ ->@H_404_3@ Int {
        return@H_404_3@ num1 - num2
    }
    func jjcc3 (num1:Int,num2:Int)@H_404_3@ ->@H_404_3@ Int {
        return@H_404_3@ num1 * num2
    }
    func jjcc4 (num1:Int,num2:Int)@H_404_3@ ->@H_404_3@ Int {
        return@H_404_3@ num1 / num2
    }
    switch@H_404_3@ str {
    case@H_404_3@ "+"@H_404_3@:
        return@H_404_3@ jjcc1
    case@H_404_3@ "-"@H_404_3@:
        return@H_404_3@ jjcc2
    case@H_404_3@ "*"@H_404_3@:
        return@H_404_3@ jjcc3
    case@H_404_3@ "/"@H_404_3@:
        return@H_404_3@ jjcc4
    default@H_404_3@:
        return@H_404_3@ nil
    }

}


jjcc("+"@H_404_3@)
let@H_404_3@ func1 = jjcc("+"@H_404_3@)
let@H_404_3@ func2 = func1!(1@H_404_3@,2@H_404_3@)

//@H_404_3@ 函数的返回值是函数,可以用函数嵌套的形式实现,但是并不是必须使用函数嵌套

func func2(str:String)@H_404_3@ ->@H_404_3@ ((Int,Int) -> Int)@H_404_3@{ func@H_404_3@ resultFunc@H_404_3@(num1:Int,num2:Int)@H_404_3@ ->@H_404_3@ Int{
        switch@H_404_3@ str {
        case@H_404_3@ "+"@H_404_3@:
            return@H_404_3@ num1 + num2
        case@H_404_3@ "-"@H_404_3@:
            return@H_404_3@ num1 - num2
        case@H_404_3@ "*"@H_404_3@:
            return@H_404_3@ num1 * num2
        case@H_404_3@ "/"@H_404_3@:
            return@H_404_3@ num1 / num2
        default@H_404_3@:
            return@H_404_3@ 0@H_404_3@
        }
    }
    return@H_404_3@ resultFunc
}

//@H_404_3@ 指定类型别名
typealias funcType@H_404_3@ = ((Int,Int) -> Int)@H_404_3@ func@H_404_3@ func3@H_404_3@ ()@H_404_3@ ->@H_404_3@ funcType {
    func hanshu3 (num1:Int,num2:Int)@H_404_3@ ->@H_404_3@ Int {
        return@H_404_3@  0@H_404_3@
    }
    return@H_404_3@ hanshu3
}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...