Lassen Sie uns sagen, ich habe:Art Signatur für Kotlin Funktion mit Standardparametern
fun addInvoker(adder:() -> Int = ::add): Int{
return adder()
}
fun add(num1:Int = 1, num2:Int = 1): Int{
return num1 + num2
}
Ich erhalte eine Fehlermeldung, da :: add zwei Parameter hat, aber die Unterschrift von addInvoker erfordert es Null-Parameter haben. Allerdings, wenn ich es zu ändern:
fun addInvoker(adder: (Int, Int) -> Int = ::add): Int{
return adder()
}
fun add(num1:Int = 1, num2:Int = 1): Int{
return num1 + num2
}
Dann kann ich nicht Addierer() aufrufen, das heißt mit seiner Standardargumente Berufung auf hinzufügen.
Also, gibt es eine Möglichkeit, wie ich :: das Standardargument zu invokeAdder hinzufügen, aber immer noch add mit adder()
aufrufen kann, wodurch es mit den Standard-Argumenten aufgerufen wird?
versuchen, Zero-Parameter Funktion Wrapper über Addierer, ich weiß nicht, ob Sie gibt es einige syntaktische Zucker in Kotlin Ad-hoc-anonyme Funktionen innerhalb einer anderen Funktionsdeklaration zu erstellen. Etwas wie '.... = :: (() -> (add()))): Int {.....' –
keine Ahnung von der Sprache, aber im Allgemeinen scheint Wrapper dein Problem zu lösen. – HuStmpHrrr
Yup, das Erstellen eines Wrappers funktioniert, aber ich frage mich, ob es eine Möglichkeit gibt, dies mit Typ-Signaturen zu tun. Ich erwarte, dass es nicht möglich ist. – pondermatic