Добавлен nazarpunk,
опубликован
JASS
Содержание:
nothing
Не совсем тип, а синтаксическая конструкция для указания того, что функция ничего не принимает или не возвращает.
function myFunc takes nothing returns nothing
endfunction
boolean
Логический тип, представлен как true и false.
integer
Целые числа представлены в диапазоне от -2,147,483,648 до 2,147,483,647.
globals
integer a = 100500
integer b = -100500
endglobals
Восьмеричная запись
Запись числа в восьмеричной системе счисления начинается с ноля:
globals
integer a = 07
integer b = -012
endglobals
Шестнадцатеричная запись
Запись в шестнадцатеричной системе счисления начинается с 0x (ноль икс) или c $:
globals
integer a = 0xFF
integer b = -$ff
endglobals
Запись регистронезависима. Тобишь большие и маленькие буквы равноправны.
Равкоды
Знаки между одинарными кавычками в простонародии зовутся равкодами. Особо одарённые причисляют их к ASCII, другие к ISO 8859-1, ну а третьи к UTF-8. На самом деле это строковое представление байт, которое более подробно описано в статье.
Рассматриваются как беззнаковые целые в диапазоне от 0 до 4,294,967,295.
globals
integer a = 'a'
integer b = -'abcd'
endglobals
Допустим один или четыре символа.
real
Числа с плавающей точкой представлены в диапазоне +/- 3.402823466e+38 с минимальным положительным числом равным 1.175494351e-38.
globals
real a = 1.1
real b = -1.
real c = -.1
endglobals
string
Строки хранятся в виде массива байтов интерпретируемого как UTF-8. На самом деле, там всё немного сложнее. Главное запомнить, что каждая уникальная строка останется в памяти до конца игры.
Лимит отдельной строки 1024 однобайтных символа. При помощи конкатенации можно создать строку длинной 4096 однобайтных символа. Напоминаю, что символы, не входящие в ASCII имеют более одного байта на символ.
Для снятия этого и многих других лимитов рекомендую использовать UjAPI.
Экранирование устроено следующим образом:
Последовательнось | Значение | Описание |
---|---|---|
\\ | 92 | обратный слеш |
\" | 34 | двойная кавычка |
Помимо экранирования существуют специальные последовательности:
Последовательнось | Описание | Пример |
---|---|---|
|cAARRGGBB | Цветовой код | |CFF00FF00Зелёный |
|r | Сброс цвета | Белый|CFF00FF00Зелёный|rБелый |
|n | Новая строка | Первая строка|nВторая строка |
TRIGSTR_1234567890 | Вставка из .wts | TRIGSTR_1 |
code
Указатель на функцию для передачи её аргументом. Самый частый пример, это передача функции в таймер:
native TimerStart takes timer whichTimer, real timeout, boolean periodic, code handlerFunc returns nothing
function myTimerCallback takes nothing returns nothing
//...
endfunction
function main takes nothing returns nothing
call TimerStart(CreateTimer(), 1. false, function myTimerCallback)
endfunction
Игра не предоставляет возможности собственноручно вызывать функции из переменных с типом code, но благо существует UjAPI, в котором реализована специальная функция:
native ExecuteCode takes code c returns nothing
null
Специально обученный ноль, под который выделен специальный токен. Поэтому такой код не вызывает ошибку:
globals
integer i = null
real r = null
handle h = null
string s = null
endglobals
Правда есть нюанс, если вы используете одну из сборок JNGP то написанный ногами pjass не даст вам скомпилировать такой код.
handle
Если не вдаваться в подробности, то это ссылка на объект в таблице объектов. Все типы, объявленные в common.j являются ссылками.
Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован konvan5
С системным подходом и хорошим оформлением. С рекомендациями и со ссылками.