Erstellen einer Klasse, die Funktion als Konstruktorargument übernimmt. Verwenden Sie diese Funktion dann zu einem späteren Zeitpunkt in der Klasse.Übergeben und Verwenden von Funktion als Konstruktorargument in Kotlin
Antwort
Sie können eine Eigenschaft mit einem Funktionstyp haben wie Sie mit jeder anderen Art würde:
class A(val f:() -> Unit) {
fun foo() {
f()
}
}
Von hier aus, können Sie diese Funktion an den Konstruktor als Methode Referenz übergeben können:
fun bar() {
println("this is bar")
}
val a = A(::bar)
a.foo() // this is bar
Oder als Lambda:
val a = A({ println("this is the lambda") })
Und Sie können sogar den üblichen syntaktischen Zucker für lam tun BDAs, dass der letzte Parameter einer Funktion ist (obwohl dies ein wenig wild bekommen):
val a = A { println("this is the lambda") }
Wenn Sie mehr als eine Konstruktor Erklärungen haben, können Sie diese Ein Beispiel aus der Praxis
...
private var listener : (() -> Unit)? = null
constructor(context: Context, listener: (() -> Unit)?) : this(context){
this.listener = listener
}
constructor(context: Context) : super(context, attrs = null)
...
können verwenden in SynchronizedLazyImpl
beobachtet werden, die Klassenunterstützung lazy
Delegierten.
public fun <T> lazy(lock: Any?, initializer:() -> T): Lazy<T> =
SynchronizedLazyImpl(initializer, lock)
Wenn wir val x by lazy {...}
verwenden, wird die initializer
, als Lambda geleitet, tatsächlich als eine Eigenschaft in einer Instanz von SynchronizedLazyImpl
gespeichert und später, wenn die entsprechenden val x
genannt wird zum ersten Mal zugegriffen wird.
- 1. Übergeben Funktion als Parameter in Kotlin
- 2. Übergabe von Lambda als Konstruktorargument
- 3. const Zeiger als Konstruktorargument
- 4. Übergeben von Code als Argument in Funktion
- 5. Kotlin: Können wir @Subscribe von EventBus (GreenRobot) in Kotlin verwenden?
- 6. Memo-Funktion In Kotlin
- 7. Verwenden von JavaCV mit Kotlin
- 8. Funktion als Klasse Argument übergeben
- 9. Übergeben von Parametern zu einem benutzerdefinierten Getter in Kotlin
- 10. Ändern von Argumenten 'übergeben von Wert' innerhalb einer Funktion und verwenden sie als lokale Variablen
- 11. Android - Deklarieren und verwenden Ansichten in Kotlin
- 12. Übergeben Sie ein Closing-Capturing-Konstruktorargument an den Basisklassenkonstruktor
- 13. Javascript Funktion Als Parameter übergeben
- 14. prüfen, ob die Funktion in Kotlin leer
- 15. Verwenden Javascript-Bibliotheken in Kotlin
- 16. Wie Wert von der Funktion in Kotlin
- 17. Eine Zeichenkette als Funktion übergeben
- 18. Verwenden von Mockito DoAnswer in Kotlin
- 19. C# übergeben Funktion als Argument
- 20. Eine Funktion als Attributwert übergeben
- 21. Verwenden von ModelForm und Übergeben von Argumenten
- 22. Übergeben einer Funktion als Parameter in Schema
- 23. Wann verwenden Sie eine Inline-Funktion in Kotlin?
- 24. Pass-Schnittstelle als Parameter in Kotlin
- 25. Capture-Liste und Funktion als Argument übergeben in schnellen
- 26. Wie übergeben und eine Funktion als Argument in Javascript aufrufen?
- 27. C# eine Liste als Parameter-Funktion übergeben
- 28. Kotlin: Kotlin-Skript (.kts) kann normalen Code nicht verwenden?
- 29. Kotlin Eingabe als BigInteger
- 30. Konflikte zwischen den Mitgliedsnamen und Konstruktorargument Namen