我理解我的第一个第二个例子使用了传入单个参数的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
到底代表什么?
答案 0 :(得分:5)
假设有一个类Issuer
,::Issuer
将为其a function reference构造函数。采用适当数量的参数(在本例中为一个)的构造函数将被解析并使用,这相当于lambda { Issuer(it) }
。
如果没有这样的类,将使用名为Issuer
且使用一个参数的函数(如果存在)。