gpt4 book ai didi

Kotlin:类似类中的双冒号与 Lambda

转载 作者:行者123 更新时间:2023-12-05 00:15:07 28 4
gpt4 key购买 nike

我知道我的第一个第二个示例使用一个传入单个参数的 lambda 函数。我试图理解为什么它与我的第二个样板示例不同,后者使用双冒号而不是 lambda。 (仍然是一个 kotlin 新手,试图将我的头围绕在来自 python 背景的双冒号上)

class Service(services: PluginServiceHub) {
init {
services.registerFlowInitiator(Landlord::class.java) { Landlord(it) }
}
}

VS
class Service(services: PluginServiceHub) {
init {
services.registerFlowInitiator(IssuanceRequester::class.java, ::Issuer)
}
}
::Issuer有什么用究竟代表什么?

最佳答案

假设有一个类 Issuer , ::Issuer将是 a function reference到它的构造函数。将解析并使用采用适当数量参数(在本例中为一个)的构造函数,这等效于 lambda { Issuer(it) } .

如果没有这样的类,一个名为 Issuer 的函数如果存在,将使用一个参数。

见:Are there constructor references in Kotlin?

关于Kotlin:类似类中的双冒号与 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45358250/

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