SWfit学习2:函数和闭包

函数

Swift 使用 func 关键字声明函数:

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

greet("hello", day: "World")

通过元组(Tuple)返回多个值:

func getPrices() -> (Double,Double,Double){
            return (3.89,4.98,0.87)
    }

getPrices()

支持带有变长参数的函数:

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

        return sum
    }
 let sum =  sumOf()
 let sum1 =  sumOf(12,23,45,14,45,87)
 println("sum =\(sum),sum1 = \(sum1)")

运行结果:sum =0,sum1 = 226

函数也可以嵌套函数:

 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 incernebt = makeincrementer()
let summery = incernebt(7)
func hasAnyMatches(list:Int[],condition:Int -> Bool) -> Bool{
        for item in list{
        if condition(item){
        return true
         }
        }

        return false
    }

func lessonThanTen(number:Int) -> Bool{
            return number < 10
  }
var numbers = [20,17,9,19]let haoMatch = hasAnyMatches(numbers, condition: lessonThanTen)

闭包
闭包是功能性自包含模块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其他一些编程语言中的 lambdas 比较相似。本质来说,函数是特殊的闭包,Swift 中可以利用{}声明匿名闭包:
闭包表达式语法有如下一般形式:
{ (parameters) -> returnType in
statements
}
函数和返回值类型都写在大括号内,而不是大括号外。

闭包的函数体部分由关键字 in 引入。 该关键字表示闭包的参数和返回值类型定义已经完成,闭包函数体即将开始。

 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 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值