Русский
Открыть в Telegram

Ветка Возвращаясь к теме глобалок - хотелось сделать нечто вроде:

5 сообщений · –
S
Возвращаясь к теме глобалок - хотелось сделать нечто вроде: if Lua_version < 5.5 then require 'strict' else load('global none')() x = 10 -- x не запрещена end y = 20 -- а здесь и подавно Всё из-за скоупов. В принципе, это странный дизайн - глобальные переменные должны быть глобальными, в этом их назначение, а то мы фактически получили ещё один вид локалок. И смысл?
  1. U
    Опять-таки, это не замена поведения глобалок, это чисто компайл-тайм проверки для сохранения времени и нервов в случае опечаток и прочего) Потому, что в луа, по умолчанию, если переменная не определена как локалка - значит юзаем глобалки. Здесь же, если ты явно прописал какие глобалки ты хочешь чтобы были глобалками и только они - будет ошибка во время загрузки исходника, а не исполнения.
  2. U
    Ну он и с попыткой сохранить обратрую совместимость как-никак) иначе все старые скрипты прям нехило так поломаются.
    1. S
      Понятно, что поломаются, может, моя цель в том состоит) - иметь полноценную статическую проверку.
  3. U
    Такое можно сделать маленьким костыликом, написав условный if Lua_version >= 5.5 then function my_load(str) return load("global print, assert, table, string, etc; " ... str) end else my_load = load end :) и повторить на все функции загрузки кода подобное... Можно ещё <const> вдобавок навесить вроде)

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем