随笔 - 11,  文章 - 0,  评论 - 38,  阅读 - 20420
复制代码
//函数基本定义
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() {
    代码块
}
复制代码

 

posted on   雨过平静  阅读(216)  评论(0编辑  收藏  举报
编辑推荐:
· 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,谁才是开发者新宠?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示