Swift:理解闭包逻辑

Posted

技术标签:

【中文标题】Swift:理解闭包逻辑【英文标题】:Swift: Understanding Closure Logic 【发布时间】:2022-01-09 15:47:37 【问题描述】:
import UIKit
func study(reviseNotes: (String) -> Void) 
    print("1")
    let notes = "Napoleon was a short, dead dude."
    print("2")
    for _ in 1...10
        reviseNotes(notes)
    


study(reviseNotes:(notes:String) in
    print("3")
    print("I'm reading my notes \(notes)")
)

reviseNotes(notes)如何调用study( reviseNotes: (notes:String) )?** (打印用于调试。)

我在尝试理解逻辑?

【问题讨论】:

reviseNotes(String) -> Void,所以它就像一个“带有String 参数的迷你函数”。因此,当您执行reviseNotes(notes) 时,您是在告诉他调用该方法。 (notes:String) in ... ,这就是你的实现。这是一个闭包/回调/块,如果您有任何其他编码知识,或者名称可能会让您更好地理解它(callback 通常可以理解)。 【参考方案1】:

reviseNotes(notes) 没有调用整个study( reviseNotes: (notes:String) )。 那只是触发你发送的参数,只意味着reviseNotes: (notes:String)

在部分中执行相同的过程。

import UIKit
func study(reviseNotes: (String) -> Void) 
    print("1")
    let notes = "Napoleon was a short, dead dude."
    print("2")
    for _ in 1...10
        reviseNotes(notes)
    


var myClosure =  (notes:String) in
    print("3")
    print("I'm reading my notes \(notes)")

study(reviseNotes: myClosure)

每当reviseNotes(for循环内10次)时,都会触发; 它只是执行 myClosure 变量。

在当前情况下, 闭包获取字符串信息,该信息可以在闭包体中使用。

有时我们需要闭包中的信息,无论何时调用它。 在这种情况下,闭包的返回类型不是Void / ()

【讨论】:

以上是关于Swift:理解闭包逻辑的主要内容,如果未能解决你的问题,请参考以下文章

数据库关系理论模式分解理解和总结

理解闭包

swift 深入理解Swift的闭包

swift深入理解闭包

理解Python中的闭包

理解 Swift 中 map 函数的简写闭包语法