Scopes and blocks
Assembly blocks can, in turn, have nested blocks. A block is a scope, and any variables declared within a scope get deallocated as soon as the execution leaves the block. Each block defines a local scope.
Variables declared within nested blocks are not visible outside of the block. They get deallocated after the block execution completes. The innerValue
variable declared within the inner block cannot be used outside the block. It is visible only inside the block in which it is declared. The same goes for the outerValue
variable, which is not accessible outside the assembly block but is available for reading inside its nested blocks.
Moreover, variables declared in the parent scope cannot be redefined in the inner scope or block. The outerValue
is already declared in the parent scope, and trying to redefine it using the let
keyword within an inner block raises a variable name is already taken
compile-time error.
Also, variables declared in one scope cannot...