Variables can have any name which does not start with a number. Variables are mutable, and always passed by value to functions.
Variables need to be declared to be used. Declaration and definition are always combined, so that undefined variables do not exist.
def main(): // declare and define `my_variable` field my_variable = 2 // redefine `my_variable` my_variable = 3 return
Shadowing is not allowed.
def main() -> field: field a = 2 // field a = 3 <- not allowed for u32 i in 0..5 do // field a = 7 <- not allowed endfor return a
Functions have their own scope
def foo() -> field: // return myGlobal <- not allowed return 42 def main() -> field: field myGlobal = 42 return foo()
For-loops have their own scope
def main() -> u32: u32 a = 0 for u32 i in 0..5 do a = a + i endfor // return i <- not allowed return a