Подфункции subfunc
В теле функции могут быть определены подфункции с помощью конструкции subfunc. Подфункцию можно определить только на первом уровне вложенности тела функции. Подфункцию можно вызывать только внутри тела функции или из других подфункций данной функции. Внутри подфункции нельзя определить ещё одну подфункцию и рекурсивно вызывать саму себя, так как локальные переменные подфункции являются статическими. Подфункция может перекрывать имена других функций. Вызов подфункции ничем не отличается от вызова обычной функции, также аналогично описание подфункции и описание её параметров, за исключением того, что отсутствуют атрибуты. В подфункции можно обращаться к локальным переменным функции.
Подфункции очень полезны когда вам надо выполнить внутри функции один и тот же код, но вы не хотите оформлять его в виде отдельной функции.
func uint myfunc( int par )
{
int locvar
subfunc int mysubfunc( int subpar )
{
return locvar + par + subpar
}
locvar = mysubfunc( 5 )
par = mysubfunc( 10 ) + mysubfunc( 20 )
}