Метатабличный / Говнокод #20012 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
govno = {10}
a = {5}
setmetatable(a, {__add = function(x,y) return x[1] * y[1] end})
print(a+govno) -- 50

плохо что работает только с таблицами

Запостил: Sfabrikan Sfabrikan, (Updated )

Комментарии (36) RSS

    • Все просто.
      Две таблицы Говно и А, в них находится в первой ячейке значения.
      Далее А назначается метатаблицой и присваивается метаметод который отвечает за + из созданой "безимяной" таблицы. Это нужно если вдруг таблицу А начнут складывать, то вызовится соответствующий метаметод, в котором указано что нужно делать, в данном случае это умножить первый элемент таблицы на первый элемент другой таблицы
      Ответить
      • Ахуенно, теперь я буду повелителем знаков, могу приказывать плюсу выпиливать систему нахуй
        Ответить
        • > могу приказывать плюсу
          Переходи на тёмную сторону кресты. Там ты сможешь приказывать даже запятой.
          Ответить
          • Скриптами эпичнее, ибо их считают неполноценными ЯП.
            Ответить
            • Нет полноценных языков
              полноценный язык ТоТ который не существует
              Ответить
            • да ну
              чушь

              дай-ка мне определение полноценного языка

              Мое определение таково: ЯП является тьюринг-полным, не эзотерическим, и не ПХП
              Ответить
  • Пагуглил про метатаблицу, кажись там никто не знает зачем они толком нужны
    Ответить
      • Да везде, где не глянь одно и тоже где-то спизженно, один и тот же пример, описание одно и тоже. Вот нахуя метаметод __add? Чтоб вызвать его в случае когда рядом с таблицей стоит плюсик? Нахуя? Повыебываться?
        Типа:
        "Ха смотри я прибавляю таблицу, а происходит ядерный трипездец. Крута да?"
        Даже наверное сам Роберту не знает нахуя они нужны.
        Ответить
          • Везде по разному, никто не знает как правильно.
            Ответить
        • Они просто очень редко применяются или вообще не применяются в какой нибудь программе. А еще LUA очень часто используют для моддинга, а там эти метатаблицы вообще никому не ненужны. По этому друг у друга и копипастят инфу метатаблицы лишь для галочки.

          А все просто, они нужны лишь для удобства.
          Ответить
        • Например мы хотим быть в курсе событий, что там у таблицы "a", но не хотим постоянно вписывать for когда нам нужно или же не хотим делать функцию и запоминать ее название ради какой-то одной таблицы.
          Вот тогда нам может помочь метатаблица с любым метаметодом какой вам понравится

          a = {1,100500}
          setmetatable(a, {__call = function(x) for k,v in pairs(x) do print(k,v) end end})
          a() --1 1, 2 100500
          a[666] = "satan"
          a.satan = 666
          a() --1 1, 2 100500, 666 satan, satan 666
          Ответить
      • Так там еще таких метаметодов еще тьма, и с каждой новой версией их становится еще больше
        Ответить
  • слушайте, а зачем нужен луа кроме того чтобы ботов для стрелялок и скрипты для фара писать?
    Ответить
      • ох, что-то меня терзают смутные сомнения в том, что для встраемого скриптового языка реально ТАК важна скорость работы
        Ответить
        • Ну если писать игоры на скриптах то быстрдействие нужно
          Ответить
          • знаете про 80/20?
            Почему 80% не сделать на c, а пистоном просто глукодить?
            Ответить
              • Допустим делаем жирный мод с бледжеком и шлюхами, допустим для СТАЛКЕР
                Ответить
                • ну вот скажи мне

                  что, правда Python бы тормозил , а lua бы летал в этом моде?
                  Ответить
                    • Есть, ты просто напиши интерпретатор питона на луа
                      Ответить
                        • Они оба Тьюринг-полны, в чём проблема? Даже на брейнфаке это возможно.
                          Ответить
                          • конечно можно
                            можно даже на брейнфаке написать компилятор языка брейнфак под платформу Z80/Spectrum

                            только можно устать очень
                            Ответить
          • Имхо все упирается в то, хватил ли тебе апи твоего софта. Если да (игори) - смело юзай луа, но если не дай бог нет - пошел он нахуй.

            В свое время писал плагин для wireshark-а
            Ответить
      • >жрет меньше.
        Это очень важно. А еще в нем нету встроенной библиотеки. Вообще. Даже для битовых операций нужны внешние модули. И нахуй он после этого нужен?
        Ответить
    • Что бы не уставать компилировать, и не учить при этом петон
      Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8