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"