Skocz do zawartości
Coders Lab

Dekonstrukcja obiektów

    Rekomendowane odpowiedzi

    Data class pozwala nam w ciekawy sposób wyciągać informacje z obiektu. Mając klasę:
     

    data class PhoneModel(
        val battery: String,
        val developer: String,
        val displaySize: Double,
        val modelName: String,
        val processor: String
    )

    i  jej instancję możemy rozbić ją na poszczególne pola:

    val phoneModel = PhoneModel("36000 mAh", "NAJLEPSZE SMARTPHONY", 6.0, "NewOne", "Najszybszy")
    val (battery, developer, displaySize, modelName, processor) = phoneModel
    println(battery)
    println(developer)
    println(displaySize)  
    println(modelName)
    println(processor)  

    Mechanizm ten bazuje na metodach component. Które są tworzone automatycznie dla data class. Jedna metoda component przypada na jedno pole w klasie i pozwala pobrać zawartość tego pola. Metody component  są numerowane zaczynając od 1 i  numeracja jest tworzona zgodnie z deklaracją pól w klasie. Czyli dla klasy PhoneModel metoda component3() będzie zwracać displaySize, a component1() zwróci battery. Dekomponując musimy o tym pamiętać. Ponieważ kolejność parametrów ma tutaj znaczenie:

    val (displaySize, processor) = phoneModel

    W powyższym przykładzie oczekiwalibyśmy pobrania informacji o rozmiarze ekranu i procesorze. Jednak tutaj wywołają się metody component1() i component2(). Czyli dostaniemy informację o baterii i firmie która stworzyła dany model telefonu.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.