On Monday, 30 October 2017 at 19:46:54 UTC, Andrei Alexandrescu
wrote:
I see from comments that different people think of it in a
different way. I suggest them to read this section from Kotlin
docs to understand the reasoning behind the elvis operator.
The principle of least astonishment indicates we should do what
the lowering does:
expr1 ?: expr2
==>
(x => x ? x : expr2)(expr1)
An approach that does things any differently would have a much
more difficult time. It is understood (and expected) that other
languages have subtly different takes on the operator.
Andrei
I may add that the same logic is used in .get(key, defaultValue)
method of Associative Arrays