5 ms·
There's no shadowing in the latter case. The second case is the same thing as a := 2 a = 3 By definition you must have nested scopes to have shadowing
by zeeboo 7y ago
There's no shadowing in the latter case. The second case is the same thing as
a := 2
a = 3
By definition you must have nested scopes to have shadowing. Within the same scope, it's only ever assignment.
- couchand 7y agoWell, in Rust you could do: let a = 2; let a = 3; I think you would say the latter shadows the former...
- zeeboo 7y agoIndeed, because semantically there is a syntactically implicit scope for every let binding. For example, in that case, the outer a is dropped after the inner a, just as if the second a had been inside of a block. There may be multiple syntactic ways to introduce a new scope.