Перейти к содержимому
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

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


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

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

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

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

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

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

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

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

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


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