val (x, y, z) = {
val a = 1 + 2
val b = 3 + 4
(a + 1, a + b, a - b)
}
2009/5/21 Rob Dickens <
arctic.bob@...>:
> Dear Martin and All,
> One good thing Java still has going for it IMO is its ability, thanks to its
> 'blank finals', always to let you confine the scope of local variables to
> where they're used - thus resulting in more maintainable code.
> For example,
> void javaVersion() {
> final int x, y, z; {
> final int a = 1 + 2;
> x = a + 1;
> final int b = 3 + 4;
> y = a + b;
> z = a - b;
> }
> point(x, y, z);
> }
> To my knowledge, this is currently best translated as,
> def scalaVersion() {
> val (x, y, z) = {
> val a = 1 + 2
> val _x = a + 1
> val b = 3 + 4
> (_x, a + b, a - b)
> }
> point(x, y, z)
> }
> Note the requirement for the shadow val, _x.
> Assuming it were feasible to support, and imagining cases with more complex
> expressions, wouldn't the following syntax be more agreeable?
> def scalaxVersion() {
> val x, y, z {
> val a = 1 + 2
> x = a + 1
> val b = 3 + 4
> y = a + b
> z = a - b
> }
> point(x, y, z)
> }
> --
> Rob, Lafros.com