• Swift学习——A Swift Tour 函数


    Functions and Closures  函数和封闭性(闭包)


    Functions  函数的使用

    Swift中的函数定义和OC中有明显的差别了,使用func定义函数,在括号里定义參数和类型,用 -> 定义返回值类型

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

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

    func getGasPrices() -> (Double, Double, Double) {
        return (3.59, 3.69, 3.79)
    }
    getGasPrices()

    函数还能够有可变数量的參数(一般这样的情况传进去个数组就好吧),注意是三个点哦  ...

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

    函数还能够进行嵌套,嵌套的函数能够訪问外部函数的变量

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

    新特性:Swift定义了函数也是一种类型,也即是说能够定义一个函数变量,某个函数的返回值能够是一个函数

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

    函数能够将另外一个函数作为它的一个參数

    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)


    Closures  闭包的使用

    函数事实上是闭包的一种情况,你能够定义一个没有名字的闭包,仅仅须要用大括号 { } 将闭包含起来,使用  in 来划分变量和返回值 (事实上功能就类似OC中的Block)

    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 }

    下一节我们说说对象和类

  • 相关阅读:
    spark Kryo serialization failed: Buffer overflow 错误
    spark sql加载avro
    Java读写hdfs上的avro文件
    spark使用scala读取Avro数据(转)
    spark遇到的错误1-内存不足
    php数据表
    php商品详情页的修改
    php ecshop前台修改
    php的文件
    php文件的学习
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3814899.html
Copyright © 2020-2023  润新知