Ich versuche, eine Erweiterungsfunktion für eine veränderbare Eigenschaft festzulegen, damit ich die Eigenschaft in der Erweiterungsfunktion neu zuweisen kann. Ich wollte wissen, ob es möglich ist.Kotlin-Erweiterungsfunktion für veränderbare Eigenschaft
Meine Ziele sind Date
Erweiterungen für den einfachen Zugriff zu machen. Zum Beispiel:
fun Date.addDays(nrOfDays: Int): Date {
val cal = Calendar.getInstance()
cal.time = this
cal.add(Calendar.DAY_OF_YEAR, nrOfDays)
return cal.time
}
Diese Funktion fügt Anzahl von Tagen zu einem Datum eines Calendar
Objekt. Das Problem ist jedes Mal, wenn ich ein neues Datum zurückgeben muss, was bei jeder Verwendung dieser Funktion verwirrend sein kann.
Was ich habe versucht:
fun KMutableProperty0<Date>.addDays(nrOfDays: Int) {
val cal = Calendar.getInstance()
cal.time = this.get()
cal.add(Calendar.DAY_OF_YEAR, nrOfDays)
this.set(cal.time)
}
Leider kann dies nicht auf ein Date
Objekt verwendet werden.
Ist es möglich, dies zu tun?
Ist dies tatsächlich kompilieren (entweder Ihre Snippets)? Das 'time'-Feld eines' Calendar'-Objekts hat den Typ 'int', sieht aber so aus, als würden Sie ihm einen' Date'-Wert zuweisen. Und dann gibst du 'cal.time' wieder als' Date' zurück, während es ein 'int' ist. –
@ MarcinKoziński, beide haben keine Fehler auf meiner Seite, und 'cal.time' ist' java.util.Date'. – hotkey
@ MarcinKoziński Ja beide kompilieren, aber die zweite kann nicht auf einem Date-Objekt verwendet werden. 'cal.time' gibt ein' Date' zurück –