zoukankan      html  css  js  c++  java
  • A Swift Tour(3)

    Functions and Closures

    使用func来声明函数,通过括号参数列表的方式来调用函数,用 --> 来分割函数的返回类型,参数名和类型,例如:

    func greet(name: String, day: String) -> String {
            return "Hello (name), today is (day)."
        }
    
    greet("Bob",  day: "Tuesday")  //这是swift文档中的调用方法,但是我在xcode6中编写的时候总报错,所以采用了下面的方式
    
    greet("Bob",  day: "Tuesday") //使用这种方式不会错误

    使用一个元组一个函数可以返回多个值

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

    上面的方法我不知道用什么来接收返回的值,请高手支招

    func 的参数也是可变的,可以把多个参数放在一个数组中

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

    函数可以嵌套,嵌套的函数可以访问在外部函数中声明的变量,你可以使用嵌套函数来解决复杂的逻辑:

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

    函数是一个 first-class 类型,这意味着函数的返回值可以是另一个函数:

    func makeIncrementer() -> (Int -> Int) {
            func addOne(number: Int) -> Int {
                return 1 + number
            }
            return addOne
        }
    
    var increment = makeIncrementer()
    increment(7)
    
    //上面的代码一直报错,不知道什么原因
    //错误:Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254
    
    //如果哪位高手知道,请指教

    一个函数可以作为另一个函数作为其参数

    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]
            let temp = hasAnyMatches(numbers, lessThanTen)
            println(temp)
    
    //这个和上面一样的错,也有事我的xcode6 有问题

    你可以通过{}来些一个闭包

    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 }

    上面的闭包 没搞明白。。。

  • 相关阅读:
    转:图嵌入 (Graph Embedding) 和图神经网络 (Graph Neural Network)
    转:pytorch框架下—GCN代码详细解读
    图神经网络GNN:给图多个 node features和edge features
    图神经网络GNN:创建图和展示图
    图卷积神经网络GCN:整图分类(含示例及代码)
    转:zip(*args)解压运算
    图卷积神经网络GCN系列二:节点分类(含示例及代码)
    Pycharm远程连接服务器(或者docker)
    认证和授权(Authentication和Authorization)
    HttpContext.Current为NULL
  • 原文地址:https://www.cnblogs.com/mlgblog/p/swift_Function_Closures.html
Copyright © 2011-2022 走看看