Andy Malakov software blog

Wednesday, December 24, 2008

My favorite features in Scala

  • Tupples in function results

    def f(a: int, b: int) : (int, int) = (a/b, a%b)

  • type Nothing and Null (like NONE and ANY in Eiffel)
  • Object definitions
    object Singleton { }

  • Parameterless methods, that can be overridden by fields and vice versa.

    class Circle(radius:double) {
    def diameter = 2*radius
    new Circle(5).diameter

  • Subtyping of generics (so-called co-variant subtyping). I miss this feature in Java:

    def Iterator[+E] ...
    now Iterator[String] will assign to Iterator[AnyObj].

  • Pattern-matching expressions? Need to try it.

Some of these I was missing since I programmed in Eiffel back in 1995.

Features I am not so fond of:

  • Case classes (a-la subtyped enums?)