zoukankan      html  css  js  c++  java
  • swift的clourse:字面量化的函数、将函数字面量化-与函数的类型签名相同

    1、clourse的签名与函数的签名相同;

    所以两者可以相互赋值;

    2、可以将函数(表达式)字面量化;

    因为可以字面量化,所以和其它的值(变量)没有任何区别,可以存在变量存在的任何地方;

    3、clourse的表达有简化的形式。

    4、尾随闭包;

    //声明

    let 名字 = {(参数) -> 返回值 in closure的内容 }

    //调用

    let 返回值 = 名(参数)

    //声明与调用合并使用

    let 返回值 = {(参数) -> 返回值 in closure的内容}(实参)

    swift的函数式编程通过clourse实现

    http://yige.org/swift/closures.php#trailing_closures

    类型声明:

    使用直接函数类型定义新类型

    public typealias Completion = (_ result: Result<Moya.Response, MoyaError>) -> Void

    let networkCompletion: Completion = { result in

                  if self.trackInflights {

                    self.inflightRequests[endpoint]?.forEach { $0(result) }

                    objc_sync_enter(self)

                    self.inflightRequests.removeValue(forKey: endpoint)

                    objc_sync_exit(self)

                  } else {

                    pluginsWithCompletion(result)

                  }

                }

    //例子:直接函数类型定义变量

        var clouserGo:((_ str:String)->(String))!

        func funcGo(_ str:String)->String{

            return str

        }

       self.clouserGo = funcGo

            print(self.clouserGo("goo"))

            self.clouserGo = {str in return str}

            print(self.clouserGo("eeee"))

  • 相关阅读:
    Spring Boot中整合Sharding-JDBC读写分离示例
    Spring Boot Admin2.X监控的服务context-path问题
    Spring Boot中整合Sharding-JDBC单库分表示例
    Spring Cloud Gateway 之 AddRequestHeader GatewayFilter Factory
    程序猿:论学习方式的重要性
    如何使用mybatis《三》
    如何使用mybatis《二》
    如何使用mybatis《一》
    mybatis中自建的类型别名
    mybatis中#和$符号的区别
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10197563.html
Copyright © 2011-2022 走看看