Kotlin:Double Colon与Lambda在相似级别

lea

我理解我的第二个示例使用带有单个参数的lambda函数。我试图理解为什么它与我的第二个示例示例(其中使用双冒号而不是lambda)有所不同。(仍然是科特琳·纽伯(Kotlin newb)试图将我的头缠在来自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代表什么呢?

热键

假设有一个class Issuer::Issuer将有一个对其构造函数的函数引用采用适当数量的参数(在这种情况下为一个)的构造函数将被解析和使用,这等效于lambda { Issuer(it) }

如果没有这样的类,Issuer则将使用名为并接受一个参数的函数(如果存在)。

请参阅:Kotlin中是否有构造函数引用?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章