Синтаксис Синтаксис Expression 2 весьма изменился со времен прошлого Expression Chip, придется изучить немного больше команд, но это сделает ваши постройки намного более функциональными. Помните что как правило существует несколько способов написания кода, и задача может быть решена несколькими путями.
1.Условия.
Условие очень важная вещь которая очень часто используется.
Code
if (A) {B = 1} else {B = 0}
Что это такое? Объясняю! if в переводе с англ. языка - если. Else - иначе.
Получается: Если А - истина (A = 1), то В = 1, иначе, В = 0
Также можно писать так:
Code
if (A)
{
B = 1
}
else
{
B = 0
}
Вторая запись как видите длинее, но она помогает в том случае, если у вас длиная операция. Знаки:
== - логическое равно, if (A == 1) - Если А равно 1, то выполнить сценарий. (если у вас только 1 или 0, то можно заменять (A == 1) на (A) )
!= - не равно, if (A != 0) - Если А не равно нулю, то выполнить сценарий.
& - и, if (A & B != 0) - получается - Если А истина и В не равно нулю, то выполнить сценарий.
| - или, if (A | - если А или В, то выполнить сценарий.
~ - значение изменено, if (~A) - если значение А изменилось, то выполнить сценарий.
2.Выражение @trigger.
Выражение @trigger может выборочно разрешать и запрещать входам вызывать выполнение кода. Возможные значения: all/none, или список разрешенных входов
@trigger all # всё по старому, изменение значения на входах всегда вызывает выполнение кода
@trigger none # изменение значения на входах никогда не вызывает выполнение кода, его вызывает только таймер, и.т.п. функции
@trigger Time Button # выполнение кода вызывается только при изменении значений на входах Time и Button
Отличия от Expression Gate
Документация по Expression Gate 1 в основном подходит для Expression 2, самая главная разница между языками - конструкции if, которые вы могли увидеть выше. Исключая это, Expression 2 лучше во всех отношениях, а базовые основы кодинга такие же. В E2 также имеется хороший редактор кода с подсветкой синтаксиса!
Сначала кода всегда идут строки с переменными, что похоже на Expression 1(хотя не то же самое) Переменные в expression должны быть объявлены до того как вы будете их использовать, так что раньше это выглядело подобным образом:
Code
N@variable example
I@A B
O@C
D = A + B
D >= 4 & A -> C = 1;
D < 4 -> C = 0;
а теперь:
Code
@name variable example
@inputs A B
@outputs C
@persist D
D = A + B
if(D >= 4 & A) { C = 1 }
else { C = 0 }
Обратите внимание на линию @persist - здесь задаются переменные которые не должны фигурировать ни на входе ни на выходе. Причина подобной конструкции проста - в Expression 2 поддерживается много типов переменных. В Expression 1 это только номера и пакеты, а в Expression 2 поддерживается большое количество типов переменных, таких как strings(строковые переменные), vectors(векторы), и еще некоторые типы, и задание этих переменных в линию @persist заставляет компилятор отлавливать ошибки а не игнорировать их.
Новые возможности
Code
@name vector example
@inputs A:vector
@outputs B:vector
C = vec(0,0,0)
if(A>C) {
B = A:normalized() * 4
} else {
B = C + A
}
Производительность
Были проведены некоторые тесты в игре:
~3.000.000/сек арифметических операций (+-*/) на числах, 2000 операций, 200 выполнений за 0.13сек
~850.000/сек арифметических операций (+-*/) на векторах, 2000 операций, 100 выполнений за 0.23сек
Горячие Клавиши Редактора
Ctrl-Пробел Проверить (и переместить курсор на ошибку)
Ctrl-S Сохранить
Ctrl-Z Отменить
Ctrl-Y Вернуть
Ctrl-X Вырезать
Ctrl-C Копировать
Ctrl-V Вставить
Ctrl-A Выделить Всё
Ctrl-Up Прокрутить Вверх
Ctrl-Down Прокрутить Вниз
Ctrl-Left Прокрутить Влево
Ctrl-Right Прокрутить Вправо
3.Комментарии.
Комментарии - это текст, который не обрабатывается программой. В каждом языке программирование есть свой вид записи комментариев.
Например - Lua:
Ну, а как же его записать в Е2? Вот так:
Для чего это нужно? Допустим у вас очень сложный код и очень много переменных, в которых очень легко запутаться. Так вот, вы пишите комментарий как-бы ссылаясь на него.
Это базовые знание Е2, без них вы не сможете пройти дальнейшее обучение.