Добавлен , опубликован

cJass

Содержание:

2.1 Инкремент и Декремент

Операторы инкремента ++ (увеличение на 1) и декремента -- (уменьшение на 1) являются унарными, то есть получающиими всего один операнд. Они могут как использоваться самостоятельно на отдельной строке, так и являться частью более сложных выражений:
  function test takes nothing returns nothing
      integer a = 7
      a++                     // после этого выражения, a = 8
      integer b; b = 3 + a--  // после этого выражения, a = 7, b = 11
      b--                     // после этого выражения, b = 10
  endfunction
что транслируется в следующее:
  function test takes nothing returns nothing
      local integer a = 7
      local integer b
      set a = a + 1
      set b = 3 + a
      set a = a - 1
      set b = b - 1
  endfunction
Эти операторы имеют две формы записи: префиксную (оператор записывается перед переменной) и постфиксную (оператор записан после переменной). При использовании унарных операторов на отдельной строке, форма записи значения не имеет.
Однако, используя их внутри сложных выражений, необходимо помнить, что они ведут себя по-разному в зависимости от формы записи:
  • при префиксной форме записи сначала переменная изменяется, а затем её новое значение передается в вычисляемое выражение.
  • при постфиксной записи, сначала в выражение передается значение переменной, а лишь затем её значение изменяется.
  function test takes nothing returns nothing
      integer a = 7
      integer b = ++a     // после этого выражения, a = 8,  b = 8
      integer c = a + b-- // после этого выражения, a = 8,  b = 7, c = 16
  endfunction
что после трансляции будет выглядеть так:
  function test takes nothing returns nothing
      local integer a = 7
      local integer b
      local integer c
      set a = a + 1
      set b = a
      set c = a + b
      set b = b - 1
  endfunction

2.2 Операторы присваивания

Вводимые синтаксисом cJass операторы присваивания позволяют сокращать запись присваиваемых выражений. Например, выражение
  a = a + 2
может быть сокращено применением составной операции сложения +=:
  a += 2
Оператор += прибавляет значение выражения, записанного справа, к выражению, записанному слева от него. Так же образуются и другие составные операторы: -=, *= и /=.
  function test takes nothing returns nothing
      integer a = 3, b = 5, c = 4, d = 6
      a += 7  // в результате a = 10
      b -= 4  // в результате b = 1
      c *= 5  // в результате c = 20
      d /= 3  // в результате d = 2
  endfunction
после трансляции выглядит так:
  function test takes nothing returns nothing
      local integer a = 3
      local integer b = 5
      local integer c = 4
      local integer d = 6
      set a = a + 7
      set b = b - 4
      set c = c * 5
      set d = d / 3
  endfunction

2.3 Логические операции

При использовании синтаксиса cJass, все логические операции можно записывать в сокращенной форме наряду со стандартной. Вы можете использовать тот вариант, который вам наиболее удобен.
  function test takes boolean a, boolean b returns nothing
      boolean c
      if (a && b) then        // a and b
          c = !b              // not b
      else
          c = b || a          // b or a
      endif
  endfunction

2.4 Внешний вид кода

cJass предоставляет несколько удобных способов управления внешним видом вашего кода. Это — операторы, позволяющие записывать несколько выражений на одной строке либо разбивать одно длинное выражение на несколько строк. Вот пример их использования:
  nothing RandomUnit(integer pIndex) {
      Sleep(1)
      unit u; u = CreateUnit( Player(pIndex),  \
                  GetRandomInt('H000', 'H009'),\
                  GetRandomReal(-100, 100),    \
                  GetRandomReal(-100, 100),    \
                  GetRandomReal(0, 360))
      Sleep(2)
      RemoveUnit(u)
  }
Символ ; при трансляции заменяется на перенос строки, а символ \ сшивает строку с последующей.

`
ОЖИДАНИЕ РЕКЛАМЫ...