//函数基本定义 func 函数名(参数名:参数类型=默认值) ->返回值类型{代码块} //无参无返回值函数 func hsmin(){ } //单参无返回值函数 func prin(st:String){ println(st) } prin("111") //111 func yuanzu(tup:(String,Int)){ print("Int:\(tup.1) String:\(tup.0)") } yuanzu(("冯小刚",1)) //Int:1 String:冯小刚 //多参无返回值函数 func addp(a:Int,b:Int){ println(\(a+b)) } addp(1,2) //3 //单参返回值函数 func prt(l:Int)->Int{ return l+1 } println("\(prt(2)") //3 //多参返回值函数 func add(a: Int , b : Int) -> Int { return a+b } func del(a : Int, b : Int) -> Int{ return a-b } println(add(3,4)) //7 //参数默认值 func sum( a : Int, b : Int = 1) -> Int{ return a+b } println(sum(3)) //4 //输出参数 func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA } var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) println("someInt is now \(someInt), and anotherInt is now \(anotherInt)") //函数嵌套(匿名函数) func chooseStepFunction(backwards: Bool) -> (Int) -> Int { func stepForward(input: Int) -> Int { return input + 1 } func stepBackward(input: Int) -> Int { return input - 1 } return backwards ? stepBackward : stepForward } var currentValue = -4 let moveNearerToZero = chooseStepFunction(currentValue > 0) // moveNearerToZero now refers to the nested stepForward() function while currentValue != 0 { println("\(currentValue)... ") currentValue = moveNearerToZero(currentValue) } println("zero!") // -4... // -3... // -2... // -1... // zero!
个人感觉闭包(Closures)相当于c里面的block只不过在block的基础上重新改良了一下而已
// 闭包的完整写法 { ( 参数列表 ) -> 返回类型 in 代码块 } //eg var a : Array = [3,1,4,2,5,7,6] var b = sort( a, { (i1 : Int, i2 : Int) -> Bool in retern i1>i2 }) //b=[1,2,3,4,5,6,7] //swift支持类型识别故简写为 var b = sort( a, {i1, i2 in retern i1>i2}) //b=[1,2,3,4,5,6,7] //还可以使用参数识别$0,$1 var b = sort( a,{ $0 > $1}) //b=[1,2,3,4,5,6,7] //无参无返回值闭包 func someFunctionThatTakesAClosure(closure: () -> ()) { 代码块 } someFunctionThatTakesAClosure({ 代码块 }) someFunctionThatTakesAClosure() { 代码块 }
分类:
IOS相关
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?