Swift 函数和闭包

原创 2016年08月29日 15:26:44

使用 func 来声明一个函数,通过函数的名字和参数来调用函数。使用 -> 指定函数返回值(分离了返回值和参数)

 func greet(name: String, day: String) -> String {
    return "Hello \(name), today is \(day)."
}
greet("Bob", "Tuesday")
练习:删除 day 参数,并添加午餐参数,显示在问候语中



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

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()



函数是一级类型,这意味着函数可以使用另一个函数作为返回值

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)



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

numbers.map({
    (number: Int) -> Int in
    let result = 3 * number
    return result
    })
练习:重写闭包,对所有奇数返回0



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

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



可以通过参数的位置而不是名称来引用参数--这对于简短的闭包来说非常有用;闭包作为最后一个参数传递给函数时,可以直接跟在括号后面。

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

如果转载请注明转于:AirZilong的博客
版权声明:本文为博主原创文章,未经博主允许不得转载。

swift_函数和闭包

  • 2016年04月22日 17:47
  • 8KB
  • 下载

swift函数式编程(高级)-闭包,协议,扩展,泛型,可空链

swift函数式编程实际是非常灵活的,在函数的高级应用中,实际上还包括了闭包,协议,泛型等等oc中没有的概念,按照顺序介绍这些概念和应用。 一:闭包 闭包实际就是objective-c中的bloc...

Swift入门篇-闭包和函数

今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数   1:函数类型 函数类型 var 变量 :(类型)->...

苹果新的编程语言 Swift 语言进阶(六)--函数和闭包

原始链接:http://blog.csdn.net/goohong/article/details/31411591

初探swift语言的学习笔记三(闭包-匿名函数)

swfit 中匿名函数的使用

swift语言的学习笔记三(闭包-匿名函数)

原文地址:http://blog.csdn.net/fengsh998/article/details/29353019 很多高级语言都支持匿名函数操作,在OC中的block也为大家...
  • xdrt81y
  • xdrt81y
  • 2015年02月06日 10:35
  • 1225

swift基础学习(04)[闭包、函数、枚举、类和结构体]

闭包、函数、枚举、类和结构体

Swift 学习之函数和闭包与对象和类—002

/*************************函数和闭包**********************/ //使用func来声明一个函数,使用名字和参数来调用函数。使用->来指定...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift 函数和闭包
举报原因:
原因补充:

(最多只允许输入30个字)