首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift 5闭包解释

Swift 5闭包解释
EN

Stack Overflow用户
提问于 2019-09-25 12:33:52
回答 1查看 176关注 0票数 0

我有一个查询Firebase实时数据库的代码。

代码语言:javascript
复制
var ref: DatabaseReference!

ref.observe(.childAdded, with: { (snapshot) in
    ref.observe(.childChanged) { (snapshot) in
        // more code
    }
})

这里我们可以看到两个闭包的例子。在第一种情况下,所有东西都在observe()内部,在第二种情况下,我们调用observe(),然后使用闭包作为回调函数。

我的问题是:

在第一行中:我们是否将闭包用作参数?关于第二个问题:我们是否将其用作回调函数?

如果是这样,一个完全理解第二种方法,但我不理解第一行,以及为什么我们写这样的闭包。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-25 12:47:49

两者都在调用相同的observe方法。Swift有一个名为尾部闭包语法的特性,它允许您删除最后一个参数,如果它是闭包,并让它遵循调用。

因此,对observe的两个调用都将闭包传递为"with",而observe方法将使用像with(snapshotValue)这样的调用来调用该闭包。

请参阅关于闭包的快速文档的尾随闭包部分。

从该文件一开始就引用:

尾随闭包 如果您需要将闭包表达式作为函数的最后参数传递给函数,并且闭包表达式是长的,那么将其写成尾随闭包是很有用的。后面的闭包是在函数调用的括号之后写的,尽管它仍然是函数的一个参数。当您使用尾随闭包语法时,您不会将闭包的参数标签作为函数调用的一部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58098502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档