Cílem block functions je vykonat blok kódu v kontextu daného kódu. To znamená, že pokud zavoláte takovou funkci na objektu s lambdou, vytvoří se rozsah (scope), ve kterém můžete k objektu přistupovat bez uvedení jeho jména. Tyto funkce se mezi sebou liší tím, jak je možné k objektu v rámci scope přistoupit a jaký je výsledek celého výrazu.
also | it | kontext objekt | Use also for actions that need a reference to the object rather than its properties and functions, or when you don’t want to shadow this reference from an outer scope. |
apply | this | kontext objekt | The common case for apply is the object configuration. Such calls can be read as “ apply the following assignments to the object.” |
let | it | výsledek lambdy | let can be used to invoke one or more functions on results of call chains. |
run | this | výsledek lambdy | run is useful when your lambda contains both the object initialization and the computation of the return value. |
with | this | výsledek lambdy | We recommend with for calling functions on the context object without providing the lambda result. In the code, with can be read as “ with this object, do the following.” |
val letResult: String = customer .let { it.name } val runResult: String = customer .run { name } val withResult: String = with(customer) { name } val applyResult: Customer = customer .apply { name } val alsoResult: Customer = customer .also { it.name }