zoukankan      html  css  js  c++  java
  • swift基础:第二部分:函数和闭包

         今天本来想利用上午的时间本来打算将swift基础部分学习完的,不巧的是,后台来和我讨论用户评价的接口,讨论过后,商讨出一种可行的方案,十几分钟时间过去了,我拿到将接口介入到已经完成的页面中,完美,终于可以腾出点时间来学习技术了。好了,我们继续学习swift,上一部分我们探讨和学习了swift的数据类型和流程控制语句,swift语句确实很灵活。致一点是不容置疑的。今天我们再来看看swift的函数和闭包。

    (1)使用func来声明一个函数,使用名字和参数来调用函数。使用->来指定函数返回值。

    func greeting(name:String , day : String) -> String {
    
        return "you name is (name),today is (day)"   
    }
    
    greeting("bob", day: "tusday")

    (2)使用一个元组来返回多个值

    greeting("bob", day: "tusday")
    
    func vagetable() -> (Double,Double,Double) {
    
        return (12.44,34.55,56.77)
    
    }

    vagetable()

    (3)函数的参数数量是可变的,用一个数组来获取它们

    func sumOf(numbers: Int...) -> Int {
    
        var sum = 0
    
        for number in numbers {
    
            sum += number
    
        }
    
        return sum
    
    }
    
    sumOf()
    
    sumOf(12,77,44,56)

    (4)函数可以嵌套。被嵌套的函数可以访问外侧函数的变量,你可以使用嵌套函数来重构一个太长或者太复杂的函数。

    func returnFifteen() -> Int {
    
        var y = 10
    
        func add() {
    
            y += 5
        }
    
        add()
    
        return y
    }
    
    returnFifteen()

    (5)函数可以作为另一个函数的返回值

    func makeIncrementer() -> (Int -> Int) {
    
        func addOne(number: Int) -> Int {
    
            return 1 + number
        }
    
         return addOne
    }
    
    var increment = makeIncrementer()
    
    increment(7)

    (6)函数也可以当做参数传入另一个函数

    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)

    (7)函数实际上是一种特殊的闭包,你可以使用{}来创建一个匿名闭包。使用in来分割参数并返回类型

     

     numbers.map({
    
      (number: Int) -> Int in
    
      let result = 3 * number
    
      return result
    
      })

    (8)有很多种创建闭包的方法。如果一个闭包的类型已知,比如作为一个回调函数,你可以忽略参数的类型和返回值。单个语句闭包会把它语句的值当做结果返回。
            你可以通过参数位置而不是参数名字来引用参数——这个方法在非常短的闭包中非常有用。当一个闭包作为最后一个参数传给一个函数的时候,它可以直接跟在括号后面。

    sort([1, 5, 3, 12, 2]) { $0 > $1 }
    
    
    
  • 相关阅读:
    ajax处理返回的json数据
    (转)JavaScript Trim() IE 不支持 问题解决 .
    ajax乱码,asp,php,jsp
    常用工具软件
    给DIV添加滚动条
    java递归菜单树转换成json字符串
    将请求的数据以json(plain)输出有乱码
    json穿
    乱码问题
    getRequestURI,getRequestURL的区别
  • 原文地址:https://www.cnblogs.com/XYG-blog/p/5434966.html
Copyright © 2011-2022 走看看