Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm very disappointed that they didn't make `val` keyword. Very simple change but code becomes significantly more readable and a lot of bugs will be compile errors.


Java is not Scala though.

By default everything has always been mutable e.g. collections, variables. And so whilst I support val I can appreciate the difficulty in switching everyone to an immutable by default mindset. Especially given the lack of decent functional transforms e.g. map, flatMap, filter in Java.


I am also disappointed by this, I want it to be more painful to use rebindable references than final (immutable) references.


How so?


I'm sure he means `val` as in Scala, where it is used to define a name that cannot be rebound:

    val x = 1
    var y = 2
    x = 3     // compile error
    y = 4     // ok
It makes it easier to read code since you don't have to keep track of changes in your head.


Yes, this would be a nice addition, but I think final var might be able to stand in for it as of right now. One issue if it was adopted might be that “final” in Java doesn’t actually mean a whole lot, since there aren’t a lot of value types where mutation can be detected.


Or as in Kotlin.


I guess the parent meant val as synonymous to final var, i.e. immutable.


var, let, val, there are so many of these and they all mean different things in different languages! It makes it hard to talk about them.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: