Next: Tuples, Previous: Extensions to C, Up: Extensions to C
In L, blocks can return a value. For instance:
let Int a = { let Int sum = 0; let Int i = 0; for(i = 0; i <= 10; i++) { sum += i; } sum };
The above code creates a new block where sum
and i
are
two variables created in the block. An iteration is done, and then
the value of sum is returned, and affected to a
.
Note the syntax : if a block is supposed to return a value, it is
composed of a list of statements followed by one expression.
By contrast, the block in the for
does not return a value, and
is composed only of statements
. This will be detailed more in
Extending the syntax.
This will be very useful when you write Macros; but it is also good programming style : it is better to pass values around using this mechanism than creating a new variable to do it.
Conditionals can also return a value. Here is how to compute the absolute value of a :
let Int abs_x = if(x >= 0) x else -x;
This eliminates the need for a distinct ? ... :
operator.
Note: You can still use conditional as you would in C. The above example could also be written:
let Int abs_x; if(x >= 0) abs_x = x; else abs_x = -x;
or even:
let Int abs_x = x; if(x < 0) abs_x = -x;