LINUX.ORG.RU

Что есть по метапрограммированию в LUA?

 , ,


0

2

Присматриваюсь к LUA. Посмотрел вот тут вот

http://lua-users.org/wiki/MetaProgramming

что то мне не нравится, похоже, что там в основном костыли. Нет ли возможностей на уровне языка, в стиле ООП, что-нибудь типа Proxy из JS?

Что нибудь такое, что может полностью определять кастомное поведение объектов?

Вроде из этого списка вот это интересно:

http://lua-users.org/wiki/CodeGeneration

но я пока не вник, что это такое, и удовлетворяет ли моим требованиям. Да и не готово оно к употреблению.



Последнее исправление: filequest (всего исправлений: 2)
Ответ на: комментарий от makoven

насколько я понимаю, метатаблицы с прокси сравнивать вообще некорректно. Метатаблицы — это аналог того, что в JS называется «объектом». proxy же позволяют кастомизировать поведение объекта вообще безо всяких ограничений.

filequest
() автор топика
Ответ на: комментарий от makoven

Ну, вот, допустим, такой пример:

o = new Proxy({}, {
   get: function(target, message){
       if(message !== "foo") throw "ERR"      
       if(flag) return 1
       return 2
   }
})

flag = false

console.log(o.foo)// 2 
flag = true
console.log(o.foo)// 1

можно так сделать метатаблицами?

filequest
() автор топика
Ответ на: комментарий от sevenredlines

ну это кому что нравится. Кому то может нужно, а кому -то нет, не о том речь. Я хотел бы, чтобы было так.

filequest
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.