Перейти к содержимому
electronic_steve

Константы

Рекомендуемые сообщения

привет игроки!

не знаю зачем но я написал константы.

они замораживают значение переменной.

код:

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
Изменено пользователем electronic_steve

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

не знаю зачем

Применений много, особенно когда большая портянка кода.

Константы как раз фиксируют переменные и в дальнейшем можно не бояться что ты их изменишь от первоначального значения.

Тебе надо это пушнуть на гитхаб ОС.

Глядишь девелопер его закоммитит в ОСь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А можно код отформатировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может, я что-то не так делаю, но не работает.

3e40f9310f.jpga47351aa13.jpg


Ещё перестаёт работать интерпретатор 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

...

обновил код. к сожалению этот код не будет работать в OC.

проблема в том что в OC какая то хрень происходит в _G.

Изменено пользователем electronic_steve

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
29 минут назад, Griffi сказал:

Работает только с глоб. переменными?

Да, именно так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, Griffi сказал:

Как работает? Циклом или метатаблицы?

Там код на 20 строк, если его развернуть. Ничего похожего на циклы там не наблюдается. Зато наблюдается использование метатаблиц.

 

Но точно никто не знает. Есть гипотеза, будто бы код работает на магии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...