//@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
}