2017-07-27 60 views
2

私の最初の2番目の例では、単一のパラメータを渡したラムダ関数を使用していることを理解しています。ラムダの代わりに使用されます。 (まだPythonの背景から来て、二重のコロンのまわりで私の頭をラップしようとしているkotlin初心者くさい)Kotlin:類似のクラスの二重コロンとラムダ

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は正確に何を表しているのでしょうか?

答えて

3

クラスIssuerがあると仮定すると、::Issuerはそのコンストラクタにa function referenceになります。適切な数の引数(この場合は1つ)を取るコンストラクタが解決され、使用されます。これは、ラムダ{ Issuer(it) }に相当します。

このようなクラスがない場合は、Issuerという名前の関数があり、引数が1つあればそれが使用されます。

参照:Are there constructor references in Kotlin?

+0

、これは非常に単純かつ明確に説明します。ありがとうございました! – mleafer

関連する問題