zoukankan      html  css  js  c++  java
  • Swift语法基础:3

    在Swift中, 一样是存在函数和闭包的, 现在让我们来看看Swift的函数和闭包:


    1.使用func来声明函数

    func person(name: String, age:String) -> String {
            return ("The name is (name), age is (age)")
    }
    
    println(person("xiaoming", "20"))
    // 打印出来的结果:The name is xiaoming, age is 20

    2.声明一个多元组的函数

    func home() -> (Double, Double, Double) {
        return (10.0, 20.0, 30.0)
    }
    println(home())
    // 打印出来的结果: (10.0, 20.0, 30.0)

    3.在声明函数的时候, 我们也可以这么去声明

    func sumOf(numbers:Int...) -> Int {
        var sum = 0
        for number in numbers {
            sum += number
        }
        return sum
    }
    println(sumOf(1, 2, 3))
    // 打印出来的结果: 6

    PS: “Int…”是数组的意思.


    4.函数的嵌套

    func returnFifeen() -> Int{
        var i = 10
        func add() {
            i++
        }
        add()
        return i
    }
    println(returnFifeen())
    // 打印出来的结果: 11

    利用这个特性, 函数与函数的嵌套使用同样是可以返回的:

    func makeIncrementer() ->(Int -> Int) {
        func addOne(number:Int) -> Int {
            return 1 + number
        }
        return addOne
    }
    var increment = makeIncrementer()
    println(increment(7))
    // 打印出来的结果: 8

    也可以当做另一个参数传入:

    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]
    println(hasAnyMatches(numbers, lessThanTen))
    // 打印出来的结果: true

    5.闭包的声明以及简单运用

    var names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
    func backwards(s1: String, s2: String) -> Bool {
            return s1 > s2
    }
    var reversed = sorted(names, backwards)
    println(reversed)
    // 打印出来的结果: [Ewa, Daniella, Chris, Barry, Alex]

    PS: 在Sort是默认没有返回值的, 而Sorted的返回值是倒序排列.

    这里有个官方的例子:

    func hasAnyMatches1(list:[Int], condition:Int -> Bool) -> Bool {
        for item in list {
            if condition(item){
                return true
            }
        }
        return false
    }
    func lessThanTen1(number: Int) -> Bool {
        return number < 10
    }
    var numbers1 = [20, 9, 7, 12]
    println(hasAnyMatches1(numbers1, lessThanTen1))
    // 打印出来的结果: true
    numbers1.map({
        (number: Int) -> Int in
        let result = 3 * number
        return result
    })
    let mappedNumbers = numbers1.map({
        number in 3 * number
    })
    println(mappedNumbers)
    // 打印出来的结果: [60, 27, 21, 36]
    let sortedNumbers = sorted(numbers1) {$0 > $1}
    println(sortedNumbers)
    // 打印出来的结果: [20, 12, 9, 7]

    PS: Sorted默认的排序是从小到大, 但是在sorted()后面加上{0>1}这句代码, 那么就会根据我们缩写的判断来进行排序.


    好了, 这次我们就讲到这里, 下次我们继续

  • 相关阅读:
    java面试的那些事
    java多线程实现复制大文件
    java心跳发送
    Java实现缓存(LRU,FIFO)
    java并发阻塞队列
    java之路
    Intellij IDEA中使用Protobuf的正确姿势
    Flink JobManager HA模式部署(基于Standalone)
    查看Flink的Job Graph时的问题
    Flink从Kafka 0.8中读取多个Topic时的问题
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4333135.html
Copyright © 2011-2022 走看看