zoukankan      html  css  js  c++  java
  • Swift -3-函数&闭包

    1.使用 func 声明一个函数。调用函数使用他的名字加上小括号中的参数列表。使用 -> 分隔参数的名字和返回值类型

    func greet(name: String, day: String) -> String {

    return "Hello (name), today is (day)."

    }

    greet("Bob", "Tuesday")

    2.使用元组(tuple)来返回多个值。

    func getGasPrices() -> (Double, Double, Double) {

    return (3.59, 3.69, 3.79)

    }

    getGasPrices()

    3.函数可以接受可变参数个数,收集到一个数组中。

    func sumOf(numbers: Int...) -> Int {

    var sum = 0

    for number in numbers {

    sum += number

    }

    return sum

    }

    sumOf()

    sumOf(42, 597, 12)

    4.函数可以嵌套。内嵌函数可以访问其定义所在函数的变量。你可以使用内嵌函数来组织代码,避免过长和过于复杂。

     1 func returnFifreen() ->Int{
     2       var y = 10
     3       func add(){
     4          y += 5
     5        } 
     6 
    7 add() 8 return y 9 } 10 11 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(number,lessThanTen)

    函数闭包

    7.函数实际是闭包的特殊情况。你可以写一个闭包而无需名字,只需要放在大括号中即可。使用 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 }

  • 相关阅读:
    伯努利数学习笔记
    bzoj 3864: Hero meet devil(dp套dp)
    CF1137E. Train Car Selection(可删堆)
    洛谷P3779 [SDOI2017]龙与地下城(概率论+Simpson+FFT)
    洛谷P4207 [NOI2005]月下柠檬树(计算几何+自适应Simpson法)
    AtCoder Grand Contest 030题解
    Sort函数(C++)
    堆排序
    十进制--->二进制(利用C++栈功能)
    对局匹配
  • 原文地址:https://www.cnblogs.com/iOSWinner/p/4295791.html
Copyright © 2011-2022 走看看