Blocks
A block is a group of code between {
and }
that has it's own scope, and
evaluates to the last value in the block. Expressions in a block are ;
separated, meaning every expression except the last one must end in a ;
and
it is illegal for a block to have just one expression (it will not parse).
You can use blocks to hide intermediate variables from outer scopes, and to group code together in a logical way.
let important_thing = {
let x = 0;
let y = x + 1;
43 - y
};
x; // compile error, x isn't in scope
y; // compile error, y isn't in scope
important_thing
This program won't compile because you can't reference y and x from outside the block scope, but if you removed those refernces it would print a very important number. Blocks are valid anywhere an expression is valid, and they are just expressions. They will become very important when we introduce lambda expressions.