您的位置:首页 > 移动开发 > Swift

Swift学习笔记 -- 函数和闭包

2015-12-09 18:23 525 查看
print("Hello, KeV1n! Happy coding!")

//声明一个函数,使用func关键字,调用函数时需要通过函数的名字和参数来调用。返回值由->来指定

func greet(name:String,day:String) ->String{

    return"Hello
\(name),today is\(day)."

}

greet("K", day:"111111111")

print(greet("Kev1n", day:"2015/12/09"))

//使用元组定义函数的多个返回值

func getGasPrices()->(Double,Double,Double){

    return(3.59,3.69,3.79)

}

print(getGasPrices())

//传递可变数量的参数,通过数组获取参数

func sumOf(numbers:Int...)->Int{

    var sum = 0

    for number in numbers{

        sum += number

    }

    return sum

}

print(sumOf(13,14,521))

//计算参数平均值的函数

func averageOf(numbers:Int...)->Int{

    var sum = 0

    for number in numbers{

        sum += number

    }

    return sum/numbers.count

}

print(averageOf(12,13,14,15,16))

//函数可以嵌套,被嵌套的函数可以访问外部函数的变量。可以通过函数的嵌套来重构太长或者太复杂的函数。

func returnFifteen()->Int{

    var y = 10

    func add(){

        y += 5
4000

    }

    add()

    return y

}

print(returnFifteen())

//函数是一级类型,也就是说函数可以使用另一个函数作为返回值

func makeIncrementer() ->(Int ->Int){

    func addOne(number:Int) ->Int{

        return 1 + number

    }

    return
addOne

}

var increment = makeIncrementer()

print(increment(7))

//函数也可以使用另一个函数作为参数

func hasAnyMatches(list:[Int],condition:Int ->Bool) ->
Bool{

    for item in list{

        if condition(item){

            print(item)

            return
true

        }

    }

    return
false

}

func lessThanTen(number:Int) ->Bool {

    return number <
10

}

var numbers = [1011,12,2,4,13]

print("numbers数组里面是否有符合条件的数\(hasAnyMatches(numbers,
condition:lessThanTen)) ")

//实际上函数是一种特殊的闭包。通过 {}创建一个匿名的闭包,使用 in
将执行体和参数、返回值进行分离

print(numbers.map({

    (number: Int) ->
Int in

    let result = 3 * number

    return result

}))

//下面这个闭包,使numbers数组里面对所有奇数返回0

print(numbers.map({

    (number: Int) ->
Int in

    var result : Int

    if(number%2 ==1){

        result = 0

    }else{

        result = number

    }

    return result

}))

//有多种更简明创建闭包的方法。如果一个闭包类型已知,比如作为一个回调函数,这时可以忽略它的参数类型、或者返回值类型、或者二者都忽略。单条语句的闭包可以直接将语句的结果当做返回值。

print(numbers.map({ numberin
3*number}))

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: