Swift学习笔记 -- 函数和闭包
2015-12-09 18:23
525 查看
print("Hello, KeV1n! Happy coding!")
//声明一个函数,使用func关键字,调用函数时需要通过函数的名字和参数来调用。返回值由->来指定
func greet(name:String,day:String) ->String{
return"Hello
\(name),today is\(day)."
}
greet("K", day:"111111111")
print(greet("Kev1n", day:"2015/12/09"))
//使用元组定义函数的多个返回值
func getGasPrices()->(Double,Double,Double){
return(3.59,3.69,3.79)
}
print(getGasPrices())
//传递可变数量的参数,通过数组获取参数
func sumOf(numbers:Int...)->Int{
var sum = 0
for number in numbers{
sum += number
}
return sum
}
print(sumOf(13,14,521))
//计算参数平均值的函数
func averageOf(numbers:Int...)->Int{
var sum = 0
for number in numbers{
sum += number
}
return sum/numbers.count
}
print(averageOf(12,13,14,15,16))
//函数可以嵌套,被嵌套的函数可以访问外部函数的变量。可以通过函数的嵌套来重构太长或者太复杂的函数。
func returnFifteen()->Int{
var y = 10
func add(){
y += 5
4000
}
add()
return y
}
print(returnFifteen())
//函数是一级类型,也就是说函数可以使用另一个函数作为返回值
func makeIncrementer() ->(Int ->Int){
func addOne(number:Int) ->Int{
return 1 + number
}
return
addOne
}
var increment = makeIncrementer()
print(increment(7))
//函数也可以使用另一个函数作为参数
func hasAnyMatches(list:[Int],condition:Int ->Bool) ->
Bool{
for item in list{
if condition(item){
print(item)
return
true
}
}
return
false
}
func lessThanTen(number:Int) ->Bool {
return number <
10
}
var numbers = [1011,12,2,4,13]
print("numbers数组里面是否有符合条件的数\(hasAnyMatches(numbers,
condition:lessThanTen)) ")
//实际上函数是一种特殊的闭包。通过 {}创建一个匿名的闭包,使用 in
将执行体和参数、返回值进行分离
print(numbers.map({
(number: Int) ->
Int in
let result = 3 * number
return result
}))
//下面这个闭包,使numbers数组里面对所有奇数返回0
print(numbers.map({
(number: Int) ->
Int in
var result : Int
if(number%2 ==1){
result = 0
}else{
result = number
}
return result
}))
//有多种更简明创建闭包的方法。如果一个闭包类型已知,比如作为一个回调函数,这时可以忽略它的参数类型、或者返回值类型、或者二者都忽略。单条语句的闭包可以直接将语句的结果当做返回值。
print(numbers.map({ numberin
3*number}))
//声明一个函数,使用func关键字,调用函数时需要通过函数的名字和参数来调用。返回值由->来指定
func greet(name:String,day:String) ->String{
return"Hello
\(name),today is\(day)."
}
greet("K", day:"111111111")
print(greet("Kev1n", day:"2015/12/09"))
//使用元组定义函数的多个返回值
func getGasPrices()->(Double,Double,Double){
return(3.59,3.69,3.79)
}
print(getGasPrices())
//传递可变数量的参数,通过数组获取参数
func sumOf(numbers:Int...)->Int{
var sum = 0
for number in numbers{
sum += number
}
return sum
}
print(sumOf(13,14,521))
//计算参数平均值的函数
func averageOf(numbers:Int...)->Int{
var sum = 0
for number in numbers{
sum += number
}
return sum/numbers.count
}
print(averageOf(12,13,14,15,16))
//函数可以嵌套,被嵌套的函数可以访问外部函数的变量。可以通过函数的嵌套来重构太长或者太复杂的函数。
func returnFifteen()->Int{
var y = 10
func add(){
y += 5
4000
}
add()
return y
}
print(returnFifteen())
//函数是一级类型,也就是说函数可以使用另一个函数作为返回值
func makeIncrementer() ->(Int ->Int){
func addOne(number:Int) ->Int{
return 1 + number
}
return
addOne
}
var increment = makeIncrementer()
print(increment(7))
//函数也可以使用另一个函数作为参数
func hasAnyMatches(list:[Int],condition:Int ->Bool) ->
Bool{
for item in list{
if condition(item){
print(item)
return
true
}
}
return
false
}
func lessThanTen(number:Int) ->Bool {
return number <
10
}
var numbers = [1011,12,2,4,13]
print("numbers数组里面是否有符合条件的数\(hasAnyMatches(numbers,
condition:lessThanTen)) ")
//实际上函数是一种特殊的闭包。通过 {}创建一个匿名的闭包,使用 in
将执行体和参数、返回值进行分离
print(numbers.map({
(number: Int) ->
Int in
let result = 3 * number
return result
}))
//下面这个闭包,使numbers数组里面对所有奇数返回0
print(numbers.map({
(number: Int) ->
Int in
var result : Int
if(number%2 ==1){
result = 0
}else{
result = number
}
return result
}))
//有多种更简明创建闭包的方法。如果一个闭包类型已知,比如作为一个回调函数,这时可以忽略它的参数类型、或者返回值类型、或者二者都忽略。单条语句的闭包可以直接将语句的结果当做返回值。
print(numbers.map({ numberin
3*number}))
相关文章推荐
- swift 中的双问号 ?? Double Question Mark
- swift学习心得 - 基本运算符
- Swift第三天学习
- Swift - 加载XIB 文件
- swift 自定义弹框
- swift中let 和var的区别
- swift添加navigationcontroller
- 关于swift的一些学习资源
- swift @noescape有啥卵用
- Swift学习(一)
- Swift 限制UITextField字数的方法
- swift创建代理
- swift 动画
- Swift- lazy 懒加载
- Swift method的internalname和externalname
- Swift第二天学习
- Swift中的NSNumber
- Swift中的Range<Int>类型
- 冷市攻略:Listo 教你 25 今天的社会 Swift 语言 - 02 Swift Tour
- Swift 中的指针使用