Sun, 27 Sep 2009 02:15:33 +0400, Denis Koroskin thusly wrote:

> Until the, non-nullable references are too hard to use to become
> useful, because you'll end up with a lot of initializer functions:
> 
> void foo(int a) {
>       Object initializeFoo() {
>               if (a == 1) return new Object1();
>               if (a == 2) return new Object2();
>               return new Object3();
>          }
> 
>       Object foo = initializeFoo();
>       foo.doSomething();
> }
> 
> I actually believe the code is more clear that way, but there are cases
> when you can't do it (initialize a few variables, for example)

Having a functional switch() helps a lot. I write code like this every 
day:

  val foo = predicate.match {
    case 1 => new Object1
    case 2 => new Object2("foo", "bar")
    case _ => new DefaultObject
  }

  foo.doSomething

I also rarely have runtime bugs these days.

Reply via email to