« Return to Thread: idea: val x, y {... x = ... y = ...}

Re: idea: val x, y {... x = ... y = ...}

by Rob Dickens-2 :: Rate this Message:

Reply to Author | View in Thread

Okay, here's something more realistic - a method that gets called periodically, in this case to make something 'look' at the next point in space:

  // scala version
  def complete(context: Context): Boolean = {
    val (x, y, z) = {
      val progress = {
        val elapsedSecs = (System.currentTimeMillis - startMillis/1000).toInt
        if (elapsedSecs > flightSecs) return true
        elapsedSecs.toDouble/flightSecs
      }
      val (_x, _y) = {
        val d = range*progress
        (frX + (d*kX).toInt, frY + (d*kY).toInt)
      }
      val _z = (4*range*(progress - progress*progress)).toInt
      (_x, _y, _z)
    }
    context.driver.look(separation, x, y, z)
    false
  }

  // scalax version
  def complete(context: Context): Boolean = {
    val x, y, z {
      val progress = {
        val elapsedSecs = (System.currentTimeMillis - startMillis/1000).toInt
        if (elapsedSecs > flightSecs) return true
        elapsedSecs.toDouble/flightSecs
      } {
        val d = range*progress
        x = frX + (d*kX).toInt
        y = frY + (d*kY).toInt
      }
      z = (4*range*(progress - progress*progress)).toInt
    }
    context.driver.look(separation, x, y, z)
    false
  }

2009/5/21 Ricky Clarkson <ricky.clarkson@...>
point {
 val a = 1 + 2
 val b = 3 + 4
 (a + 1, a + b, a - b)
}

I know it looks like I'm just being picky, but I'm encouraging you to
give a use case.  Perhaps this is one:

val (x, y, z) = {
 val a = 1 + 2
 val _x = a + 5
 val _y = _x + 3
 val _z = _y * 4
 (_x, _y, _z)
}

2009/5/21 Rob Dickens <arctic.bob@...>:
> So maybe I should have written,
> def scalaVersion() {
>   val (x, y, z) = {
>     val a = 1 + 2
>     val _x = a + 1
>     val b = 3 + 4
>     val _y = a + b
>     val _z = a - b
>     (_x, _y, _z)
>   }
>   point(x, y, z)
> }
> 2009/5/21 Ricky Clarkson <ricky.clarkson@...>
>>
>> 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
>
>

 « Return to Thread: idea: val x, y {... x = ... y = ...}