美文网首页
Swift @autoclosure

Swift @autoclosure

作者: AryCode | 来源:发表于2018-10-25 11:42 被阅读3次

使用@autoclosure可以使得该参数结果延迟获取,在获取复杂数据结果作为参数时有优化的作用

  1. 使用@autoclosure
func findGreatThan100_autoclosure(parm1: Int,parm2: @autoclosure () -> Int) -> Int {
    print("findGreatThan100_autoclosure_fun_invoking")
    if parm1 > 100 {
        return parm1
    }
    return parm2()
}

func method() -> Int{
    print("method_fun_invoking")
    return 101
}

let result = findGreatThan100_autoclosure(parm1: 10, parm2: method())

结果

    print("findGreatThan100_autoclosure_fun_invoking")
    print("method_fun_invoking")
  1. 不使用@autoclosure
func findGreatThan100_noautoclosure(parm1: Int,parm2: Int) -> Int {
    print("findGreatThan100_noautoclosure")
    if parm1 > 100 {
        return parm1
    }
    return parm2
}

func method() -> Int{
    print("method_fun_invoking")
    return 101
}

let result1 = findGreatThan100_noautoclosure(parm1: 10, parm2: method())

结果

 print("method_fun_invoking")
 print("findGreatThan100_noautoclosure")

在Swift中,|| 或运算符就是使用了这个关键字,使得只要有一个参数符合要求,后面参数不再进行计算,源码如下

extension Bool {
  public static func || (lhs: Bool, rhs: @autoclosure () throws -> Bool) rethrows
      -> Bool {
    return lhs ? true : try rhs()
  }
}

相关文章

  • Swift的autoclosure与escaping标签

    @autoclosure 在《函数式 Swift》第四章提到了 Swift 的 autoclosure 标签能够避...

  • SwiftAPI设计之使用@autoclosure

    原文链接:Using @autoclosure when designing Swift APIs Swift的@...

  • Swift @autoclosure

    使用@autoclosure可以使得该参数结果延迟获取,在获取复杂数据结果作为参数时有优化的作用 使用@autoc...

  • Swift @autoclosure

    @autoclosure 做的事情就是把一句表达式自动地封装成一个闭包 (closure)。这样我们用的时候,就可...

  • Swift @autoclosure

    先看苹果中断言的实现过程,感受下autoclosure的魅力: 当x 不是单单的一个值 而是一个表达式返回的值呢?...

  • swift @autoclosure

  • Swift之||,&&,??的实现及原理

    前言 上篇Swift中@autoclosure模拟了或运算,这篇继续探讨或运算,看看Swift中或运算是如何实现的...

  • Swift @autoclosure 使用

    今天看了 Apple 博客的一篇文章 Building assert() in Swift, Part 1: ...

  • Swift中@autoclosure

    我们先看一个例子 我这里定义了一个函数,函数有两个参数,第一个是一个Bool值,第二个参数是()->T这样一个无参...

  • Swfit-@ autoclosure 详解

    @autoclosure 属于swift中的一个全新的创造, 随着swift语言的健壮,函数式编程的思想的渗透.闭...

网友评论

      本文标题:Swift @autoclosure

      本文链接:https://www.haomeiwen.com/subject/muuqtqtx.html