// 函数嵌套:函数作用域中定义了另外一个函数,内层函数的作用域中可以使用外层函数的参数
func helloLanou(var num: Int){
num++
func hello23(){
num++
}
hello23()
num
}
helloLanou(10)
func hellolanou2() -> ((Int) -> String) { func hanshu (i:Int) -> String
{
return "\(i)"
}
return hanshu
}
hellolanou2()
let hanshu = hellolanou2()
let i = hanshu(1)
// 声明一个函数,实现功能:传入"+","-","*","/"的字符串,返回对应运算的函数:"+"-----返回int + int = int
func jjcc (str:String) -> ((Int,Int) -> Int)? { func jjcc1 (num1:Int,num2:Int) -> Int {
return num1 + num2
}
func jjcc2 (num1:Int,num2:Int) -> Int {
return num1 - num2
}
func jjcc3 (num1:Int,num2:Int) -> Int {
return num1 * num2
}
func jjcc4 (num1:Int,num2:Int) -> Int {
return num1 / num2
}
switch str {
case "+":
return jjcc1
case "-":
return jjcc2
case "*":
return jjcc3
case "/":
return jjcc4
default:
return nil
}
}
jjcc("+")
let func1 = jjcc("+")
let func2 = func1!(1,2)
// 函数的返回值是函数,可以用函数嵌套的形式实现,但是并不是必须使用函数嵌套
func func2(str:String) -> ((Int,Int) -> Int){ func resultFunc(num1:Int,num2:Int) -> Int{
switch str {
case "+":
return num1 + num2
case "-":
return num1 - num2
case "*":
return num1 * num2
case "/":
return num1 / num2
default:
return 0
}
}
return resultFunc
}
// 指定类型别名
typealias funcType = ((Int,Int) -> Int) func func3 () -> funcType {
func hanshu3 (num1:Int,num2:Int) -> Int {
return 0
}
return hanshu3
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。