@PianoIst, мы можем в EEL использовать пространства имен, это очень удобно.
Например - my_obj.1 = 1234; my_obj.2 = 2345; my_obj.3 = 3456;
И можно пойти дальше так же - my_obj.1.1 = 36782; my_obj.1.2 = 4363; и т.п.
Все это можно использовать как обычные переменные, это понятно.
Можно использовать и релятивно - например, можно указать obj в виде префикса, и потом ссылаться на него с помощью префикса this., либо аргумента функции( со звездочкой):
function test(x,y,z)
(
this.x = x;
this.y = y;
this.z = z;
);
//====
A.test(1,5,8);
B.test(4,7,9);
// Получим A.x, A.y,A.z , B.x, B.y, B.z - это фигня
Также можно вызвать любую функцию "от имени".
namespace в виде аргумента(пример, учитывая предыдущее)
function test2(Arg1*, Arg2*)
(
Arg1.x = Arg2.z;
Arg1.y = Arg2.x;
Arg1.z = Arg2.x;
);
//====
test2(A, B); // Передали не как значения, а как имена!
=============
Для тех, кто в Lua пробовал, это кажется вообще смешным, само собой разумеющимся.
=============
Что хотелось бы от EEL - понимая теперь, что невозможно подойти к namespace, как к простой переменной.
Можно сделать некую специальную переменную-псевдоним, со специальным именем, допустим _alias.
Чтобы можно было сказать :
function test3(Arg1*, Arg2*)
(
Arg1.x = Arg2.z;
Arg1.y = Arg2.x;
Arg1.z = Arg2.x;
);
//====
_alias = MyVar, например, и написать:
function test3(_alias, Arg2); // отправить в функцию не значение, и не конкретное имя, а любое присвоенное переменной _alias!
Опс, забыл главное - мы должны получить MyVar.x , y , z - а не _alias.x и т.п.
Особенно круто это было бы для функций. Но, для начала, хотя бы для переменных.
Джастин 100% знает, о чем речь - в его коде Super8 идет mirror - зеркало - он берет переменные из буфера, как временные, работает с ними, отдает в буфер. Куча лишних действий, почему бы это не сделать на уровне языка, пускай, например, _mirror
// Опять же в Lua - это вообще норма, но мы не о нем
//====================
Вот, примерно, поэтому и не могу объяснить на английском даже приблизительно, достаточно запутано.