1. Lua / Говнокод #20012

    +24

    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, 15 Мая 2016

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

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

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

                Мое определение таково: ЯП является тьюринг-полным, не эзотерическим, и не ПХП
                Ответить
                • Да я то хз, почему считают неполноценными. Возможно потому что не могут работать с комплюктером
                  Ответить
                  • >>комплюктером
                    гугл показал мне http://a2ch.ru/i/027a9cba0b6adf1f59d45c93ce11ff34
                    Ответить
    • Пагуглил про метатаблицу, кажись там никто не знает зачем они толком нужны
      Ответить
      • "Там" - это где?
        Ответить
        • Да везде, где не глянь одно и тоже где-то спизженно, один и тот же пример, описание одно и тоже. Вот нахуя метаметод __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
            Ответить
          • > сам Роберту не знает нахуя они нужны.

            Ну как и перегрузка методов в пистоне, для реализации DSL.
            Вот, например, классический пример:
            http://www.inf.puc-rio.br/~roberto/lpeg/
            Ответить
        • Так там еще таких метаметодов еще тьма, и с каждой новой версией их становится еще больше
          Ответить
    • слушайте, а зачем нужен луа кроме того чтобы ботов для стрелялок и скрипты для фара писать?
      Ответить
      • Он создан для легкого встраиваемости и легкости обучения.
        А еще внезапно он быстрее питона, и жрет меньше.
        http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=lua&lang2=python3
        Ответить
        • ох, что-то меня терзают смутные сомнения в том, что для встраемого скриптового языка реально ТАК важна скорость работы
          Ответить
          • Ну если писать игоры на скриптах то быстрдействие нужно
            Ответить
            • знаете про 80/20?
              Почему 80% не сделать на c, а пистоном просто глукодить?
              Ответить
              • 80% времени всмысле а не кода
                Ответить
                • Допустим делаем жирный мод с бледжеком и шлюхами, допустим для СТАЛКЕР
                  Ответить
                  • ну вот скажи мне

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

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

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

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