gpt4 book ai didi

Swift 3 嵌套函数与闭包

转载 作者:行者123 更新时间:2023-11-28 11:00:03 27 4
gpt4 key购买 nike

我有一个大型方法可以进行一些加载和计算,因此它会显示一个事件指示器 View 来通知用户他们应该等待。逻辑非常复杂,所以有 4 个地方数据处理可能会中断或返回(一切都在闭包上完成)。无论如何,我不想重复这段代码:

DispatchQueue.main.async {
activityView.hide()
activityView.removeFromSuperview()
}

在 4 个地方所以我想我会写一个嵌套函数:

func removeActivityView() {
DispatchQueue.main.async {
activityView.hide()
activityView.removeFromSuperview()
}
}

但后来我意识到在 Swift 中我也可以这样做:

let removeActivityView = {
DispatchQueue.main.async {
activityView.hide()
activityView.removeFromSuperview()
}
}

以完全相同的方式使用并且从用户的角度来看完全相同。

那么,一种方法与另一种方法之间的实际区别是什么?

最佳答案

在这种情况下它们是相同的。在 Swift 中:

Nested functions are closures that have a name and can capture values from their enclosing function.

Source

其实你也可以这样做:

func foo() {
print("Foo!")
}
let bar = foo

现在 foo()bar() 会产生相同的结果。这可以用于任何不接受参数的函数。

我不确定编译器如何/是否区分这两者。如果有人对此有更多信息,我将非常感兴趣!

关于Swift 3 嵌套函数与闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41175245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com