On Tue, 21 Aug 2012 13:55:58 +0200, Regan Heath <re...@netmail.co.nz> wrote:

I don't buy the argument that having to explicitly type ".get" will stop anyone from automatically coding statements like:

val g: Option[T] = f.doSomething()
g.get.doSomethingElse()

So don't give them that access?

I have an Option struct on my home computer that only allows access to
the held value if the error case is simultaneously handled:

Option!int a = foo();

int n = a.match!(
    (int x) => x,
    (None n) => 0 // or throw, or what have you.
    );

The same solution is perfectly adaptable to MaybeNull, MaybeNan, and probably
a host of others of the same family.

With some clever use of opDispatch, one could write an Option struct that
lets you call methods and acces members of the wrapped type, and return
Option!ReturnType.


On the other hand, the suggested syntax of "bob?.department?.head?.name" from Kotlin is pure genius, and has a good chance of actually being used.

Absolutely. Probably hard to include in D though, as a ? .b is the
beginning of a conditional expression.

--
Simen

Reply via email to