Option(null) is None
Doing a presentation soonish on "Why #Scala" - have a truckload of arguments, but what are your arguments for Scala over Java? Give me ammo!
Ok, I'll bite. Here's one of those every-day things I stop and notice from time-to-time. It's not new, it's not huge, it's just one of the things that makes a difference when you're trying to ship stuff.
The Google Java APIs for accessing Google contacts has you write code like this:
That's how the "retrieving all contacts" example starts. The basic pattern is: check if the property you want is available, then get it.
I recently had the need to go through contacts to extract birthdays. I only care about contacts with a name and a birthday, but I use Scala so don't have to do the if/get dance because [Option does the right thing in a for-comprehension]:
The above evaluates to a
contacts starts as a
List) containing those contacts with a name and a birthday. So even
when using regular Java libraries, you end with benefits (less code,
more readable code, less-likely-to-cock-up-the-logic code) just by using