The null coalescing operator aka the Elvis operator is a simple shorthand 
for the traditional approach seen in C-derived languages:

String something = something ? something : "default value"; // Ternary 
operator in C, Java, JavaScript, C#, an many others
val something = something ?: "default value" // Groovy coalescing operator 
(Elvis Operator)
String something = something ?? "default value"; // C# coalescing operator 

The advantage of Scala's Option is that it works properly with map and fold 
type functions without any special null checking/coalescing syntax. 

Fantom and Kotlin (and Haskell) take this much further. By default, 
references are non-nullable, and the compiler guarantees that they can 
never contain null values at runtime. When nulls make sense, you can choose 
to use a nullable reference.

IMO, the best is the Fantom/Kotlin/Haskell route. Scala has the second best 
option that is based on an intentional trade off with better Java interop. 
A simple null coalescing operator is the weaker solution and that is only 
slightly better than Java which requires slightly more syntax.

On Sunday, June 3, 2012 9:43:48 PM UTC-5, Cédric Beust ♔ wrote:
>
> From a practical standpoint, I think that the "Elvis" approach which I 
> first saw in Groovy and which is also available in Fantom and Kotlin is the 
> best of both worlds. It doesn't offer the nice monadic properties that 
> Option gives you, but it comes at a much cheaper price and less boiler 
> plate.
>
>

-- 
You received this message because you are subscribed to the Google Groups "Java 
Posse" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/javaposse/-/2IMakRSvHSoJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to