Локальные переменные
Локальные переменные служат для временного хранения промежуточных результатов во время выполнения функции или метода. Локальная переменная может быть объявлена в любом месте тела функции, в том числе и во вложенных блоках ограниченных фигурными скобками. Объявление начинается с новой строки, указывается имя типа, затем через запятую или пробел следуют имена переменных данного типа.
Если тип переменной поддерживает использование of и квадратных скобок, то вы можете указать эти дополнительные параметры при описании локальной переменной. Кроме этого, числовые переменные, а также строки str и двоичные данные buf могут быть инициализированы в момент описания с помощью операции присваивания '='. При инициализации переменных можно использовать любые выражения. По умолчанию, переменная инициализируется нулями или вызовом соответствующей функции инициализации.
func myfunc( uint param, str name )
{
str a b = "My string" + name, c
uint i = 25 * param + 3
uint k = 10, l = 2
arr x[ k, l ] of uint
arrstr months = %{"January", "February", "March", "April", "May",
"June", "July", "August", "September", "October",
"November", "December" }
...
}
Область видимости
Область видимости локальной переменной ограничена от места объявления до конца блока, в котором она объявлена, при этом она видна во вложенных блоках. Глобальные и локальные переменные могут быть переопределены, т.е. внутри нового блока может быть объявлена переменная с именем уже существующей переменной. Новая переменная может иметь другой тип. До конца текущего блока будет доступна только последняя переменная, а объявленная раньше становиться невидимой. После завершения блока происходит возврат к старой переменной. Все объекты описанные как локальные переменные автоматически создаются при входе в блок и уничтожаются при выходе. Можно создавать объекты с помощью служебной функции new. В этом случае программисту надо следить за удалением объектов с помощью функции destroy. Так как, при выходе из функции происходит уничтожение локальных переменных, то вы можете возвращать только числовые локальные переменные.
func myfunc
{
uint a = 10
... // a == 10
{
... // a == 10
uint a = 3
... // a == 3
while ...
{
... // a == 3
}
... // a == 3
}
... // a == 10
}