Skocz do zawartości
Coders Lab

Kotlin - funkcje apply i with

    Rekomendowane odpowiedzi

    Kotlin apply to funkcja rozszerzająca dowolny typ. Zawsze zwraca obiekt odbiorcy (object(receiver)). Należy jej używać wtedy gdy nie jest potrzebny dostęp od żadnej z funkcji w obiekcie odbiorcy i wtedy gdy chce się zwrócić odbiorcę. Najczęściej używa się jej do inicjowania nowego obiektu:

    val phoneModel = PhoneModel().apply {
         battery = "36000 mAh"
         developer = "NAJLEPSZE SMARTPHONY"
         displaySize: 6.0
         modelName: "NewOne"
         processor: "Najszybszy"
    }

    Podobnie do apply, funkcja rozszerzająca with potrafi zmieniać wartości pól w obiekcie:

    with(phoneModel)
        {
            battery = "46000 mAh"
            developer = "NAJLEPSZE SMARTPHONY"
            displaySize: 6.5
            modelName: "nowszy"
            processor: "Jeszcze szybszy"
        }

    Obie funkcje mają podobne zastosowania, jednak różnią się nieco:

    • with działa bez object(receiver)
    • apply działa wprost na referencji obiektu, gdzie with potrzebuje jej jako swojego argumentu.
    • ostatnie wyrażenie w with jest zwracane jako wynik funkcji:
      var procesor = with(phoneModel)
          {
              battery = "46000 mAh"
              developer = "NAJLEPSZE SMARTPHONY"
              displaySize: 6.5
              modelName: "nowszy"
              processor: "Jeszcze szybszy"
              
              processor
          }
      
      println(procesor) // Wyświetli: "Jeszcze szybszy"

       

    • Piwko! 1

    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ę

    • Ostatnio przeglądający   0 użytkowników

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

    x