微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,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 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐