8 ms·
look at the signature for `with` inline fun <T, R> with(receiver: T, f: T.() -> R): R it takes a lambda that is scoped to the receiver type `T`. This mea
by burntcookie90 11y ago
look at the signature for `with`
inline fun <T, R> with(receiver: T, f: T.() -> R): R
it takes a lambda that is scoped to the receiver type `T`. This means the lambda runs in the scope of whatever is passed in as a receiver.
with(list) {
add(item)
add(item)
}
This essentially lets you create DSLs for whatever.
Another thing that's bit me in butt recently is that `Protocol`s aren't concrete types, unlike an `interface` in Java/Kotlin.