EnglishРусский  

   Приложение

Данный проект закрыт! Создан новый скриптовый язык с тем же именем. Всё доступно на GitHub.
Также попробуйте нашу open source кроссплатформенную программу для создания и управления скриптами.

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

Определение функции func

Функция состоит из двух частей: описание и тело функции. Описание функции начинается с ключевого слова func, затем идут возвращаемый тип, имя функции, атрибуты функции в угловых скобках и описание параметров функции в круглых скобках. Обязательным является только имя функции. Если не указано имя возвращаемого типа, то функция ничего не возвращает.

Тело функции или метода - это все, что заключено в фигурные скобки идущие после описания функции. Тело функции может содержать подфункции, выражения, конструкции и описания локальных переменных.

func  uint sum( uint left right )
{
    return left + right
}

Атрибуты

entry

Этот атрибут указывается у функций, которые должны быть запущены автоматически до вызова главной функции.

main

Этот атрибут указывается у главной функции с которой начнется выполнение программы. Если функций с таким атрибутом несколько, то вызовется последняя функция с атрибутом main. Главная функция запускается после вызова всех entry функций. Функции имеющие атрибут main или entry не должны иметь параметров.

func  uint myprog<main>
{
   print("Hello, World!")
   getch()
}

result

Gentee не позволяет возвращать структурный тип из функции, если он принадлежит (описан внутри ) этой функции. Этот атрибут позволяет обойти это ограничение. Подробнее о его использовании написано на странице Возвращение переменных.

alias

Если вам необходимо где-то получить и передать идентификатор функции, метода или оператора, то вы можете воспользоваться этим атрибутом. Так как функции и методы могут иметь одни и те же имена, но разные параметры, то нахождение необходимой функции может привести к некоторым трудностям. Вы можете присвоить атрибуту alias имя и использовать этой имя в качестве переменной-идентификатора функции.

func uint myfunc_verylongname<alias = myfunc>( uint param )
{
   return param * 10
}

func str mystring<result>
{
   result = "Result string"
}

func main<main>
{ 
 	print( "Val= \( myfunc->func( 10 ))")
 	print( mystring() )
 	getch()
}

Параметры

Параметры функции описываются такой последовательностью: имя типа, имена параметров с данным типом, далее запятая или пробел и опять имя типа и параметры. Если функция не имеет параметров, то в описании указываются пустые скобки или скобки вообще не ставятся. Можно определять функции с одним и тем же именем, но с разными параметрами. В этом случае при вызове функции компилятор по типам указанных параметров определит подходящую функцию.

При описании параметров можно использовать квадратные скобки для указания размерности и оператор of. При описании таких параметров не нужно указывать в квадратных скобках конкретное количество элементов.

func uint myfunc( uint a b c, byte d, str st1 st2, arr marr[,] of uint )
{
   ...
}

Обращение к параметрам ничем не отличается от обращения к локальным переменным. Все числовые типы передаются в функцию или метод по значению. То есть вы можете без всяких последствий изменять значение параметра. Все структурные типы передаются по ссылке. В этом случае, все сделанные вами изменения будут происходить с оригинальной переменной, которую вы передали в качестве параметра.

func str myadd( str left )
{
   left += " OK!"
   return left
}

func main<main>
{
   str val 
   myadd( val = "Process" )
   print( val )
}

Смотрите также

Редактировать