首页 > 代码库 > Swift学习——A Swift Tour 函数
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 }
下一节我们说说对象和类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。