Swift学习——A Swift Tour 函数

Functions and Closures  函数和封闭性(闭包)


Functions  函数的使用

Swift中的函数定义和OC中有明显的区别了,使用func定义函数,在括号中定义参数和类型,用 -> 定义返回值类型

func greet(name: String, day: String) -> String {
    return "Hello \(name), today is \(day)."
}
greet("Bob", "Tuesday")

使用一个元组 ()用来返回多个返回值

func getGasPrices() -> (Double, Double, Double) {
    return (3.59, 3.69, 3.79)
}
getGasPrices()

函数还可以有可变数量的参数(一般这种情况传进去个数组就好吧),注意是三个点哦  ...

func sumOf(numbers: Int...) -> Int {
    var sum = 0
    for number in numbers {
        sum += number
    }
    return sum
}
sumOf()
sumOf(42, 597, 12)

函数还可以进行嵌套,嵌套的函数可以访问外部函数的变量

func returnFifteen() -> Int {
    var y = 10
    func add() {
        y += 5
    }
    add()
    return y
}
returnFifteen()

新特性:Swift定义了函数也是一种类型,也即是说可以定义一个函数变量,某个函数的返回值可以是一个函数

func makeIncrementer() -> (Int -> Int) {
    func addOne(number: Int) -> Int {
        return 1 + number
    }
    return addOne
}
var increment = makeIncrementer()
increment(7)

函数可以将另外一个函数作为它的一个参数

func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {
    for item in list {
        if condition(item) {
            return true
        }
    }
    return false
}
func lessThanTen(number: Int) -> Bool {
    return number < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, lessThanTen)


Closures  闭包的使用

函数其实是闭包的一种情况,你可以定义一个没有名字的闭包,只需要用大括号 { } 将闭包括起来,使用  in 来划分变量和返回值 (其实功能就类似OC中的Block)

numbers.map({
    (number: Int) -> Int in
    let result = 3 * number
    return result
    })

你可以省略参数类型和返回值让上面的闭包更加简介,只有一条语句的闭包直接返回这条语句执行的结果

numbers.map({ number in 3 * number })

你还可以在括号后面写闭包

sort([1, 5, 3, 12, 2]) { $0 > $1 }

下一节我们说说对象和类

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值