Swift中文教程(四)--函数与闭包
2014-06-03 20:52
381 查看
Function 函数
Swift使用func关键字来声明函数,函数通过函数名加小括号内的参数列表来调用。使用->来区分参数名和返回值的类型:
练习:
remove day参数,增加一个参数,比如:今天的午餐特色菜~
函数使用元组(tuple)来返回多个值:
函数还可以接收可变的参数个数,将这些参数收集在数组里面:
练习:
编写一个函数并求出其参数的平均值。
函数是可以嵌套的,嵌套过的函数可以访问到外部函数声明过的变量,使用函数嵌套可以便于你组织过长或复杂的函数:
在Swift中,函数是第一等类型,这意味着一个函数可以将另外一个函数作为它的返回值:
函数还能接收其它函数作为它的参数:
Closure 闭包
函数其实是一种闭包的特殊情况,你可以写一个用花括号{}包裹的匿名闭包,用in来区分参数与主体的返回类型:
练习:
重写这个闭包来对所有奇数返回0
闭包有多种简洁的写法。当返回值类型已知时,比如委托回调,你就可以省略它的参数类型,它的返回值类选,或者二者都略去,单行语句的闭包可以直接隐式地返回此一语句的值:
你可以通过数字而不是名字来引用一个参数,这对于很短的闭包非常有用。一个闭包通过圆括号传递其最后一个参数到函数能立即生效:
谢谢,Swifter-QQ群:362232993,同好者进~
github地址:https://github.com/Joejo/Swift-lesson-for-chinese
Swift使用func关键字来声明函数,函数通过函数名加小括号内的参数列表来调用。使用->来区分参数名和返回值的类型:
func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)." } greet("Bob", "Tuesday")
练习:
remove day参数,增加一个参数,比如:今天的午餐特色菜~
func greet(name:String, day:String) -> String{ return "Hello \(name), today is \(day)." //第二章说过用\()来内嵌变量 } greet('Joe', '菩提玉斋')
函数使用元组(tuple)来返回多个值:
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)
Closure 闭包
函数其实是一种闭包的特殊情况,你可以写一个用花括号{}包裹的匿名闭包,用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 }
谢谢,Swifter-QQ群:362232993,同好者进~
github地址:https://github.com/Joejo/Swift-lesson-for-chinese
相关文章推荐
- Swift中文教程(四)--函数与闭包
- Swift中文教程(七) 闭包
- 学校学习ios教程笔记,第六节swift中的函数以及闭包
- Swift中文教程(六)函数
- Swift中文教程(六)函数
- Swift中文教程(七) 闭包
- Swift中文教程(七) 闭包
- Swift中文教程 -- 函数
- Swift中文教程(六)函数
- Swift中文教程(三)--流程控制
- Swift中文教程(1)-简介
- Swift中文教程(三) 字符串和字符
- Swift中文教程(一)基础数据类型
- Swift中文教程(五)--对象和类
- Apple Swift中文入门教程【转发】
- Swift中文教程(二)基本运算符
- Swift中文教程(一)基础数据类型
- 苹果编程语言Swift中文教程:Swift简介 地址
- Swift中文教程(三) 字符串和字符
- Swift中文教程(一)--欢迎来到Swift的世界