Форум портала о WarCraft Форум портала о WarCraft
порно чат

Вернуться   Форум портала о WarCraft > Вселенная WarCraft > World Editor > Статьи
Регистрация Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Закрытая тема
 
Опции темы Опции просмотра
Старый 15.02.2010, 00:02   #1
VAV
Pandora Directive
 
Аватар для VAV
 
Регистрация: 04.09.2002
Адрес: Area 404
Сообщений: 3,611
VAV как роза среди колючек VAV как роза среди колючек VAV как роза среди колючек
Отправить сообщение для VAV с помощью ICQ
По умолчанию JASS - Выражения

JASS - Выражения




Выражение - это часть кода, которая вычиляется, а затем вместо него подставляется вычисленное значение (конечно, у него есть тип). Большинство операторов используются вместе с выражениями. Переменные могут быть иницилизированны с выражением. Выражения могут "вкладываться" друг в друга. Этот раздел покажет все возможные выражения в JASS.
Прим. переводчика: следует приметить, что даже одно число может считаться выражением, хоть и не попадает под определение, данное тут.
Также хочу сказать, что слова "оператор" и "операция" тут будут значить одно и то же почти везде. Может и будут исключения.


Арифметические операции

code:
expression + expression
expression - expression
expression * expression
expression / expression
- expression
+ expression


Эти выражение производят складывание, вычитание, умножение и деление двух операндов, а также отрицание и тождество одного операнда. Умножение и деление имеет более высокий приоритет; у каждей "пары" одинаковый приоритет, и выполняются с лево на право. Таким образом:
code:
a + b * c - d / e


Равняется:
code:
( a + (b * c) ) - (d / e)


Операнды должны быть либо integer, либо real. Если хотя бы один из них real, то и результат будет real, в других случая результат integer.


Операции сравнения

code:
expression == expression
expression != expression
expression >= expression
expression <= expression
expression > expression
expression < expression


Эти выражения проверяют следующие условия: равно, не равно, больше или равно, меньше или равно, строго больше, строго меньше.

Операнды операторов == и != могут быть любого подобного типа (т.е., оба должны быть числами / строками, один юнит, а другой destructable и т.д.). Возможен один особый случай - сравнение real и integer. У типов integer, real, boolean и string проверяются значения. У handle-подобных типов проверяются ссылки (т.е., проверяется ссылаются ли они на одно и то же). Примичание: это для первых двух проверок: == и !=.

Все остальные операторы могут брать только integer и real. Все они возвращают boolean (случаи когда и что возвращают можно не рассматривать - и так понятно).


Логические сравнения

code:
expression and expression
expression or expression
not expression


Эти выражения производят логические операции и возвращают, соответственно, boolean. Операции "и", "или" и "не". У них самый низкий приоритет.
code:
a == b and c > d + e or f


Равняется этому:
code:
( (a == b) and (c > d + e) ) or f



Строковые операторы

code:
expression + expression


+ используется для склеивание двух строк (как в Java). Учтите что тут имеются в виду любые данные типа строки, т.е., можно поставить любую функцию (всмысле, то что функция вернет) и т.п.. Тип результата будет string.


Вызов функции

code:
func_name(arguments)


Это примерно то же самое что и call (но не совсем). Параметры передаются тем же способом. Функция должна что-то вернуть, что и будет подставлено в выражение.


Обращение к массивам

code:
array_variable[index]


Это подставит значение, хранимое в ячейке массива. index, соответственно, номер ячейки. Это может быть любым выражением, которое даст integer, он и будет номером вызываемой ячейки массива.


Обращение у функции

code:
function func_name


Это выражение обращается к функции. Он вернет ссылку на эту функцию типа code. Она может быть передана функциям с параметром code (например, StartThread).


Название переменной

code:
variable_name


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


Константы

Константы могут быть числами (integer и real), строками и булинами. Также значение может быть null - ссылка никуда - для handle-подобных или строк.

Константы integer это 32-битные целые числа. Например - 0, 1, 2, 4, 10, 14, 1000, 1234, 3245. Если первый знак числа 0 (например 016), то число принимается как восьмиричное. Если есть префикс 0x (например, 0xA15F), тогда число интерпретируется как шестнадцатиричное, и может содержать знаки a-f, которые будут приниматься за цифры. Целочисленные могут быть выражены строкой в кавычках (одинарных), в этом случае сохраняются биты знаков по таблице ASCII (4 байта = 32 бит). Такие значения исползуются для обозначения объектов (юнитов / способностей и т.д.) которые храняться в таблице объектов (.slk файлы в mpq). Там юниты обозначаются как раз такими четырех-значными кодами, например, 'abcd', 'AhGn', 'EEEE'.

Числа типа real также 32-битные (с плавающей запятой, соответственно). Например, 1.0, 0.0, .34, 1.5, 1000.3, 324.32, 0.35.

Константы булевых значений, это, соответственно, true и false.

Строковые константы записываются в двойных кавычках, например "This is a string". Значение переменной string может быть null, в этом случае она ничего не вернет и не может быть использована (ей можно только дать значение). В строковой константе, обратный слэш используется, также как в C или Java, для написания "некоторых" символов. Например, для того чтобы в строке написать кавычки, мы напишем "This is a \"string\"".
Прим. переводчика: хочу напомнить, что переменная-константа, и константы, про которые рассказано выше - не одно и то же. Тут имеются в виду константные данные! То есть, вот есть число 3, ведь оно всегда будет равно 3, значит - оно константа... Впрочем, это довольно сложно понять. Считайте, что тут я просто рассказал, как оперировать с этими данными.


Круглые скобки

code:
(expression)


Ставя скобки вокруг выражения, выражение получает более высокий приоритет по сравнению с тем, что находится прямо за скобками (возможны несколько скобок). Например:
code:
(1 * (2 + 3) != a) == (b or GetSomeBoolean())


Таким образом, 2 + 3 выполнится до *, и b or GetSomeBoolean() выполнится до ==.

Автор: Raz
© WC3.RU, 2002-2010 гг
Нашли ошибки и недоработки в статье? Сообщите нам в раздел Поддержки! С уважением, WC3.RU
__________________
Смотри подругому !
VAV вне форума  
Старый 15.02.2010, 00:03   #2
VAV
Pandora Directive
 
Аватар для VAV
 
Регистрация: 04.09.2002
Адрес: Area 404
Сообщений: 3,611
VAV как роза среди колючек VAV как роза среди колючек VAV как роза среди колючек
Отправить сообщение для VAV с помощью ICQ
По умолчанию Ответ: JASS - Выражения

Другие статьи:

Основы JASS.
JASS - Общие понятия.
Синтаксис JASS.
JASS - Библиотечные функции. Часть 1.
JASS - Библиотечные функции. Часть 2.
JASS - Операторы.
JASS - Выражения
vJASS - Комментарии.
JASS - Функции
JASS - Типы
JASS - Заключение.
Faq по созданию рельефа.
Зачем так много триггеров?
Немного об оптимизации кода.
Текстовые триггеры
Создаем простейшие карты (карты для melee)
Событие с переменным периодом.
Познаем триггеры (Triggers)
Познаем регионы (locations)
Познаем переменные...
Отлавливаем двойной клик мышью.
Массивы и циклы в обычных и текстовых триггерах
Локальные переменные в Custom Text
Камеры, спецэффекты, карта, цвета, кэш...
Добавление своих функций в триггеры
Добавление своих моделей и др. в карту
Делаем очень большую карту...
Делаем огнемет.
Улучшенная версия огнемета...
Глюки worldeditor'a
Random с задаваемой вероятностью - аура.
__________________
Смотри подругому !

Последний раз редактировалось VAV, 12.08.2010 в 14:30.
VAV вне форума  
Закрытая тема


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +4, время: 19:15.

Design Developed by CompleteGFX
vBulletin® Version 3.6.7.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Перевод: zCarot