…And we’re back with another exciting round of Project Wallet, formerly known as WBJUS!

  • Multline Strings (note the date)
  • Use "package" to indicate default visibility
  • “Elvis” operator? Well, you could do that… or you could use Option instead and worry less about NPEs.
  • Import Aliases (third example)
  • Lightweight Properties? There are a variety of friendly-syntax ways of simulating properties in Scala, but they’re not declarative enough. I feel like something like this is needed in Scala too.
  • “This” type? Someone points out that you can use self-referential type parameters to do the same thing, which of course Scala supports.
  • Static method in interfaces? It’s debatable whether this is even desirable, but there’s no direct analog in Scala. However, you can have singletons that don’t suck or "interfaces" that have method implementations. Take your pick!
  • Fold keyword? sigh — with closures, so many language features don’t need to be language features.
  • Multiple switch expressions and case ranges? Scala’s pattern matching and tuples make “multiple expressions” trivial, but for ranges, you have a completely general solution: pattern guards (e.g. case n: Int if n >= 1 && n <= 5)
  • And finally, “Simplified Varags Method Invocation”. In Java, T… is sugar for T[], and Java arrays are not subject to type erasure. In Scala, T* is sugar for Seq[T], and the T is erased, so it’s safe.

Why “Project Wallet”? Well, why settle for a handful of coins?