Skip to content

Comment on Scala, Part IIparent

Comments

There's a lot of stuff which is fine about Scala, but I still like this presentation: https://nurkiewicz.github.io/talks/2014/scalar/#/

In particular, this slide is my favourite: https://nurkiewicz.github.io/talks/2014/scalar/#/22

  // One of these doesn't compile
  seq foreach println
  seq.foreach{println}
  seq.foreach(println)
  seq.foreach{println(_)}
  seq.foreach(println(_))
  seq.foreach(x => println(x))
  seq.foreach(x: Int => println(x))
  seq foreach{x: Int => println(x)}
  seq.foreach{x: Int => println(x)}
  seq foreach{case x => println(x)}
  seq.foreach{case x => println(x)}
  seq foreach{case x: Int => println(x)}
  seq.foreach{case x: Int => println(x)}

Only one? If there's any justice in the world, it's the only one without any brackets. I fear it's one of the many without a dot, though.

This all depends which syntactic conventions you're used to.

"a + b" is more readable than "a.+(b)", and so that's what scala allows. I think it's a neat way of allowing operator overloading.

"iterable.foreach { ... }" is also readable for a callback.

FWIW, the one which doesn't compile is (apparently) "seq.foreach(x: Int => println(x))". https://scastie.scala-lang.org/krtG0VwgTmCNwIxATYFAbg

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.