Twoim zadaniem jest śledzenie zmian w klasie… Za każdym razem, gdy zawartość
content
zostanie zmieniona na nową wartość, licznik howManyTimesContentWasChanged
ma zostać podbity o 1.Zmodyfikuj klasę
ChangeableState
.Pożądane działanie:
val state = ChangeableState("jareczek") // howManyTimesContentWasChanged: 0 //zmiana z "jareczek" na "jaro" -> podbijamy licznik state.content = "jaro" // howManyTimesContentWasChanged: 1 //zmiana z "jaro" na "jarek" -> podbijamy licznik state.content = "jarek" //howManyTimesContentWasChanged: 2 //zmiana z "jarek" na "jarek" - nie podbijamy licznika state.content = "jarek" //howManyTimesContentWasChanged: 2 //zmiana z "jarek" na "jareczek" - podbijamy licznik state.content = "jareczek" //howManyTimesContentWasChanged: 3
- nie zmieniaj nazw
content
anihowManyTimesContentWasChanged
, niech oba nadal będąvar
podpowiedź
Czy potrzebujemy tworzyć całą osobną funkcję, żeby zdefiniować customowy setter?
Chcesz podwoić liczbę punktów za to zadanie?
Dodaj ignorowanie białych znaków. Wtedy oczekiwane zachowanie będzie następujące:
val state = ChangeableState("jareczek") // howManyTimesContentWasChanged: 0 //zmiana z "jareczek" na "jareczek " -> nie podbijamy licznika state.content = "jareczek " // howManyTimesContentWasChanged: 0
Uzupełnij ten kod, po czym go uruchom (zielony trójkąt w prawym górnym rogu)
Rozwiązanie zadania #3
Wszystkie odpowiedzi były poprawne. Funkcję
infix operator fun Coordinates.plus
możemy wywołać jako infix, operator i extension. Wyjaśnienie: