Swift(1)函数

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

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

}

greet("Bob", "Tuesday")

println(greet("Bob", “Tuesday"))


执行结果:Hello Bob, today is Tuesday.

name: String 形式定义变量及类型  ()内用逗号分隔参数,->后跟函数返回类型

///

使用tuple(元组)返回多个值:

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

    return (3.59, 3.69, 3.79)

}

println(getGasPrices())

结果是  (3.59, 3.69, 3.79)

(这个可以用在哪里??)



函数可以接受可变参数个个数,就是可以接受不确定个数的参数,并放在数组中进行运算:

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

    var sum = 0

    for number in numbers {

        sum += number

    }

    return sum

}


println(sumOf(1, 2, 3))

结果是6

练习:编写函数求平均值:

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

    var sum = 0 ,i=0

    for number in numbers {

        i++

        sum+=number

        }

    

    return sum/i

}

println(sumOf(4, 8, 3))



可以在函数体里定义和调用函数

func returnFifteen() -> Int {

    var y = 10

    func add() {    //定义内嵌的函数

        y += 5

    }

    add()   //执行add()函数

    return y

}

println(returnFifteen())

执行结果 15



//函数可以返回另一个函数:

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

    func addOne(number: Int) -> Int {   //构造这个函数

        return 1 + number

    }

    return addOne       //返回这个函数

}

var increment = makeIncrementer()


println(increment(7))

执行结果 8


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

//若有一个数字符合小于10这个条件,则返回true

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

    for item in list {

        if condition(item) {

            return true

        }

    }

    return false

}


func lessThanTen(number: Int) -> Bool {

    println("iii")

    return number < 10

}

var numbers = [20, 19, 7, 12]

println(hasAnyMatches(numbers, lessThanTen))



Functions are actually a special case of closures. You can write a closure without a name by surrounding code with braces ({}). Use in to separate the arguments and return type from the body.

函数可以理解为是闭包的一种特殊形式。你可以写一个没名字的闭包,放入{}中即可。使用in从闭包中分离参数、返回类型。

var numbers = [20, 19, 7, 12]

numbers.map({

(number: Int) -> Int in

let result = 3 * number

    println(result)

    return result;

})

结果:60 57 21 36

等价代码:

numbers.map({number in

    3*number})
 

 

重写一个闭包来对所有奇数返回0。

var numbers = [20, 19, 7, 12]

numbers.map({

(number: Int) -> Int in

var result = number

    if (!((number%2)==0))

    {

        result=0

    }

    println(result)

    return result;

})

返回结果:20 0 0 12




//
函数嵌套->函数指针

func chooseFC(back:Bool)->(Int)->Int

{

    func bigMore(input:Int)->Int {return input+1 }

    func smallMore(input:Int)->Int {return input-1}

    return back ? bigMore : smallMore

}


var x = 4

let condition=chooseFC(x<0)

while x != 0

{

    

    x = condition(x)

    println("\(x)")

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

limaning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值