4 ms·
Kotlin solves the problem elegantly with the 'apply' and 'run' extension functions. fun foo() = Runtime.getRuntime().apply { addShutdownHook(Thre
by erpellan 9y ago
Kotlin solves the problem elegantly with the 'apply' and 'run' extension functions.
fun foo() =
Runtime.getRuntime().apply {
addShutdownHook(Thread { println("Bye!") })
traceMethodCalls(true)
exit(404)
}
- hungerstrike 9y agoKotlins `apply` seems exactly like the much maligned `with` statement from JavaScript, which has been deprecated. Why is it elegant here, but deprecated there?
- m00g00 9y agoTook the words right out of my mouth (literally, and 5 minutes faster). Why? I'd say because Douglas Crockford.
- abiox 9y agoi suspect some or many of the reasons it's discouraged in js do not apply to kotlin. as we all know, js has... unique constraints in it's design. why is it deprecated in js?
- m00g00 9y agoWhich is awfully similar to JavaScript's much maligned 'with' statement. Never understood the FUD and 'considered harmful' screeds against it. Yes I'm aware of the performance/optimization concerns, but honestly, the whole javascript language is a massive performance/optimization concern and we've managed pretty well. Simple things like changing style properties on DOM elements: with(element.style) { display = "block"; marginLeft = "5px"; background = "green"; } And of course with 'with', everything is a fluid interface, and with the flexibility of being able to enter code between the function calls.