electronic_steve 344 Опубликовано: 5 июня, 2016 (изменено) привет игроки! не знаю зачем но я написал константы. они замораживают значение переменной. код: const={} setmetatable(const,{__call=function(self,key) rawset(self,key,{rawget(_G,key)}) rawset(_G,key,nil) end}) setmetatable(_G,{__index=function(self,key) if const[key] then return const[key][1] else return rawget(self,key) end end,__newindex=function(self,key,value) if not const[key] then rawset(self,key,value) end end}) пример: pi=math.pi const "pi" pi="error" print(pi) --> 3.1415926535898 ещё один пример: const "_" _=123 print(_) --> nil Изменено 22 июня, 2016 пользователем electronic_steve 7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SDV 784 Опубликовано: 5 июня, 2016 не знаю зачем Применений много, особенно когда большая портянка кода. Константы как раз фиксируют переменные и в дальнейшем можно не бояться что ты их изменишь от первоначального значения. Тебе надо это пушнуть на гитхаб ОС. Глядишь девелопер его закоммитит в ОСь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 5 июня, 2016 А можно код отформатировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 22 июня, 2016 Может, я что-то не так делаю, но не работает. Ещё перестаёт работать интерпретатор Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
electronic_steve Автор темы 344 Опубликовано: 22 июня, 2016 (изменено) ... обновил код. к сожалению этот код не будет работать в OC. проблема в том что в OC какая то хрень происходит в _G. Изменено 22 июня, 2016 пользователем electronic_steve Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Griffi 17 Опубликовано: 19 сентября, 2020 Работает только с глоб. переменными? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 19 сентября, 2020 29 минут назад, Griffi сказал: Работает только с глоб. переменными? Да, именно так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Griffi 17 Опубликовано: 19 сентября, 2020 Как работает? Циклом или метатаблицы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 20 сентября, 2020 20 часов назад, Griffi сказал: Как работает? Циклом или метатаблицы? Там код на 20 строк, если его развернуть. Ничего похожего на циклы там не наблюдается. Зато наблюдается использование метатаблиц. Но точно никто не знает. Есть гипотеза, будто бы код работает на магии. 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах