Имя константы не должно содержать букв в нижнем регистре. Константам можно присваивать любые выражения. Значение константы вычисляется при первом обращении к данной константе, но тип константы автоматически определяется на этапе компиляции по типу присваиваемого выражения. Поэтому, несмотря на то, что тип при определении константы не указывается, действует проверка типов при её использовании.
Используя общее выражение с IOTA. Иногда возникает необходимость определить список констант со значениями, которые вычисляются по определенным правилам. В этом случае, после ключевого слова const необходимо указать одно общее выражение, которая будет вычисляться для каждой константы в данном определении. В этом выражении можно использовать специальную переменную IOTA, которая равна порядковому индексу константы в списке с нуля. Сами константы могут перечисляться через пробел или с новой строки.
Определение функции состоит из двух частей - описание параметров с возвращаемым типом и тела функции. При определении функции вы должны указать ключевое слово "func", имя функции, передаваемые параметры и тип возвращаемого значения. Только имя функции является обязательным элементом.
Заключительный параметр в описании функции может иметь суффикс '...'. Функция с таким параметром называется вариативной и может принимать ноль и более аргументов для этого параметра. Вы получаете этот параметр как массив переданных аргументов. Например, int pars... означает, что pars в действительности является arr.int и вы можете получить i-й аргумент с помощью pars[i].
Описание функции запуска
Скрипт на языке Gentee должен содержать специальную функцию без параметров, которая определяется с помощью ключевого слова "run". Выполнение скрипта начинается с вызова этой функции. Скрипт должен иметь только одно определение "run".
func VariadicExample(int i, int s...) int {
int sum = i*2
for v in s {
sum += v
}
return sum
}
func MyFunc(int par1 par2) int {
int par3 = VariadicExample(3, par1, par2, 4, 5, par1+par2)
return (par1+par2 +par3)/3
}
RunDecl = "run" [FunctionName] [ Result ] Block
run int {
int i ret
while i < 10 {
ret += myFunc(i++)
}
return ret
}