美文网首页
swift-闭包

swift-闭包

作者: malgee | 来源:发表于2018-03-22 15:43 被阅读3次

闭包 block, 函数, 匿名函数 (闭包和函数都是引用类型,能改变
(值类型不能改变

// 生成一个随机的数组
let value = arc4random()%1000
var array: [Int] = []
for _ in 0..<10 {
    let value = Int(arc4random()%1000)
    array.append(value)
}
// 自定义排序
func approach (num1: Int, num2: Int) -> Bool
{
    return abs(Int32(num1 - 500)) < abs(Int32(num2 - 500))
}

// 传入排序函数
array.sort(by: approach) 

对上面的传的函数进行改造, 传入闭包(匿名函数)


// 这里的逻辑处理和上面的效果一样
array.sort(by: {(num1: Int, num2: Int) -> Bool in

     return abs(Int32(num1 - 500)) < abs(Int32(num2 - 500))
})

闭包简化

array.sort(by:{(a: Int, b: Int) -> Bool in 
        
      return a > b
})

array.sort(by:{(a: Int, b: Int) -> Bool in return a > b})

array.sort(by:{a, b in return a > b})

array.sort(by:{a, b in a > b})

array.sort(by:{$0 > $1})

array.sort(by:>)

结尾闭包

结尾闭包是一个函数要传入的参数的最后一个参数的时候, 闭包可以提到()外面去, 相应的参数也就没有意义,可以省略
() 可以不包含闭包内容, 也可以省略

array.sort(){a, b in return a > b}

array.sort{a, b in return a > b}

内容捕获

捕获到闭包外面的 num 值,函数无法实现捕获

var num = 500
array.sort(by:{(a: Int, b: Int) -> Bool in

     return abs(Int32(a - num)) < abs(Int32(b - num))
})

相关文章

  • Swift-闭包

    Swift-闭包 Swift闭包的含义 闭包是自包含的功能代码块,可以用作函数的参数或者返回值 闭包可以捕获上下文...

  • Swift-闭包

    闭包是swift中非常重要的一个知识点。类似于objective-c中的block,其实函数就相当于一个特殊的闭包...

  • swift-闭包

    闭包 ≈ block, 函数, 匿名函数 (闭包和函数都是引用类型,能改变值)(值类型不能改变值) 对上面的传的函...

  • Swift- 闭包

    闭包在Swift中非常有用。通俗的解释就是一个Int类型里存储着一个整数,一个String类型包含着一串字符,同样...

  • Swift-闭包

    Swift中的闭包和OC中的Block类似,语法格式不一样,但都是是用于c异步回调或者类之间的通信。本质上是一段可...

  • Swift-闭包

    闭包可以从定义它们的上下文中捕获和存储对任何常量和变量的引用。 这被称为关闭这些常量和变量。 Swift处理所有的...

  • Swift-闭包

    闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。 在Swift中的闭包与OC中的block类似。 ...

  • Swift-闭包

    闭包的特点:一个函数有权访问另外一个函数内的变量和参数 闭包—匿名函数 结尾闭包 衍生 内容捕获 闭包和函数是引用类型

  • Swift-闭包

    Swift 闭包 函数 ()->() Swift 中的闭包和 Objective-C 中的 block 类似,闭包...

  • swift-闭包

    这里总结主要看点 : 闭包传值问题 闭包和block基本一样,传值问题可以参照OC的中方式去考虑问题 . 引用学习...

网友评论

      本文标题:swift-闭包

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