Определение text функции
Специально для работы с текстовыми данными имеется команда text. Она позволяет генерировать текст любой сложности и объема.
Описание начинается с ключевого слова text, затем идут атрибуты в угловых скобках и описание параметров в круглых скобках. Обязательным является только имя text функции. Text функция не может возвращать значение. Описание атрибутов и параметров идентично описанию функций. Выводимый текст начинается с новой строки после ее описания и продолжается до конца файла или до комбинации \!.
Главным отличием text функций от функций является то, что здесь не строки встраиваются в исходный код, а исходный код встраивается в текст. Задачей text функции является вывод текста на консоль или в строку. Тип действия определяется при вызове text функции.
Вывод на консоль
Вывод на консоль осуществляется с помощью унарной операции @.@nametextfunc( параметры)
Вывод в строку
Вывод в строку осуществляется с помощью бинарной операции @ где слева указана строка для вывода. Результат text функции будет дописываться в строку.stemp @ nametextfunc( параметры)
Дополнительные возможности
Внутри текста действительны все команды со служебным символом что и в строке. Кроме этого имеются следующие дополнительные команды.
\! Конец text функции. По умолчанию, text функция идет до конца файла.
\@name(...) Вызов другой text функции. При вызове сохраняется тип текущего вывода (консоль или строка).
\{...} Вставка блока кода. Внутри фигурных скобок вы можете размещать исходный код как в теле функции. Этот блок кода соответствует блоку кода первого уровня у функции и в нем можно описывать подфункции. Чтобы вывести строку в текущий вывод text функции из блока кода необходимо использовать операцию @"string"
text hello( uint count )
Must be \(count) strings
\{
uint i
fornum i, count : @"\(i + 1) Hello, World!\n"
}Welcome to Gentee!\!
func b <main>
{
@hello(3) // Write to console
@"Press any key...\n"
getch()
str out
out @ hello( 5 )
print( out )
getch()
}
Текущий вывод
Можно получить текущую строку вывода с помощью использования this. Если this равно нулю, то значит текущий вывод осуществляется на консоль.