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

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    ont = love.graphics.newFont("/font/RobotoMono-Regular.ttf",14);
    love.graphics.setFont(font);
    
    box = {
      draw = false;
      }
    function box:cr(d,variant)
      --self.draw = false;
      self.d = d;
      self.var = variant or {};
      table.insert(self.var,">> Quit");
      --table.insert(self.var,">> retry");
      self.str = 0;
      self.v = vector(0,(love.graphics.getHeight()/2)-150);
      self.h = 300;
      self.w = 800;
    end
    
    function box:up(dt)
      
    end
    
    function box:dr()
      if self.draw then
        love.graphics.setColor(0,0,0);
        love.graphics.rectangle("fill",self.v.x,self.v.y,self.w,self.h);
        love.graphics.setColor(1,1,1);
        love.graphics.print(self.d,self.v.x,self.v.y);
        love.graphics.print(self.str,self.v.x,self.v.y+20);
        for k,v in pairs(self.var) do
          if k == self.str then
            --love.graphics.setColor(1,1,1);
            love.graphics.draw(animmouse.img.RMB,self.v.x+font:getWidth(v),self.v.y+200+((k-1)*20))
            love.graphics.setColor(1,1,0);
          else
            love.graphics.setColor(1,1,1);
          end
          love.graphics.print(v,self.v.x,self.v.y+200+((k-1)*20));
         
        end
      end
    end
    
    function box:mw(y)
      if self.draw then
        local lt = #self.var;
        self.str = self.str - y;
        if 1 > self.str then
          self.str = lt;
        elseif lt < self.str then
          self.str = 1;
        end
      end
    end
    
    function box:mp(x,y,b)
      if self.draw then
        if b == 2 then
          if self.str == #self.var then
            self.draw = false
          end
        end
      end
    end

    lalalalallallalalalalallallalalalalallal lalalalalallallalalalalallallalalalalall allalalalalallallalalalalallallalalalala llallalalalalallallalalalalallallalalala lallallalalalalallallalalalalallallalala lalallallalalalalallallalalalalallallala lalalallallalalalalallallalalalalallalla lalalalallallalalalalallallalalalalallal lalalalalallallalalalalallallalalalalall allalalalalallallalalalalallallalalalala llallalalalalallallalalalalallallalalala lallallalalalalallallalalalalallallalala lalallallalalalalallallalalalalallallala lalalallallalalalalallalla

    Запостил: 3oJIoTou_xyu, 03 Ноября 2020

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

    • показать все, что скрыто#Гомедев
      Ответить
    • показать все, что скрытоМы не знаем что этот код делает.
      Ответить
      • показать все, что скрытоА он обязан что-то делать?
        Ответить
      • таки обычная таблица с функциями
        Ответить
        • Не вижу здесь таблицы.
          Ответить
          • показать все, что скрытоbox же

            в goldenhuilangе так реализуется oop, примерно как в старом JS: делаешь таюлицу, делаешь в не функции, которые (если их правильно пичснуть) получают первым аргументом self ссылку на таблицу
            Ответить
            • показать все, что скрытона всякий случай пруфану

              Двоеточие (colon) заставляет неявно передавать 'self'.

              Но если вызвать функицю через точку, а не через двоеточие, то можно передать туда другой self.
              Такой финт часто можно проворачивать в скриптушне, но не в жабоёбстве

              local petuz = {name="php developer", iq=14}
              local trot = {name="TORT", iq=1000}
              
              function petuz:hello()
                print("Hello, I am " .. self.name .. " with iq " .. self.iq)
                self.name = "krestuh"
                self.iq = self.iq * 100
              end
              
              
              petuz:hello()
              petuz:hello()
              
              --But you can pass object explicitly
              petuz.hello(trot)
              Ответить
            • Нету ООП тут. Метатаблицы не используются в данном примере.
              Ответить
              • показать все, что скрытоТаблица с методами вполне так объект, даже без оптимизации через метатаблицу, имхо.
                Ответить
                • Я конечно не до конца понимаю что есть ООП. Судя по вики: Объе́ктно-ориенти́рованное программи́рование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования.

                  В данном случае это не совсем так как я понимаю. Так как он не будет наследовать пока не перегрузится в метатаблицу или пока не перепишется определенным способом.
                  Ответить
                  • В русской вики питушня какая-то написана. Классы, наследования — что за хуита?
                    То ли дело «PHP» «английская вики»:
                    Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects",
                    which can contain data and code: data in the form of fields (often known as attributes or properties),
                    and code, in the form of procedures (often known as methods).
                    Ответить
                    • Вот теперь понял. Просто не сращивал с ниже комментарием.
                      наверное ПХПшник и написал про ООП в вики.
                      Ответить
                    • показать все, что скрытоДа, это определение уважает права сишников и луашников.
                      Ответить
                      • и? сишка не является ООП языком даже по английской вики
                        ну и в русской традиции есть разница между объектно-ориентированным и объектным, где у бояр первого сорта есть абсракция, инкапсуляция, наследование и полиморфизм, а у заедушных анскилябр второго только "прототипы"
                        Ответить
                        • показать все, что скрытоНаследование нинужно. А инкапсуляция и полиморфизм и в сишке норм работают.
                          Ответить
                          • нет не норм
                            какой бы ты способ эмуляции ооп в сишке бы не выбрал, у него будет очень много мест, где её можно сломать, как хрустальный хуй
                            в сишке даже статического полиморфизма нет, о чем речь вообще
                            Ответить
                            • >в сишке даже статического полиморфизма нет, о чем речь вообще


                              всмысле нет а макросы
                              Ответить
                  • ООП вообще мутно формализовано, и не всегда понятно, что имеется ввиду.

                    Наследование и полиморфизм трудно реализовать без поддержки языка, но оно часто и не нужно.

                    А хранить в структуре данные и указатели на функцию можно хоть на асемблере
                    Ответить
                • Сука:
                  Прототипное программирование — стиль объектно-ориентированного программирования, при котором отсутствует понятие класса, а наследование производится путём клонирования существующего экземпляра объекта — прототипа.
                  В прототип-ориентированных системах предоставляется два метода создания нового объекта: клонирование существующего объекта, либо создание объекта «с нуля». Для создания объекта с нуля программисту предоставляются синтаксические средства добавления свойств и методов в объект. В дальнейшем, из получившегося объекта может быть получена полная его копия — клон. В процессе клонирования копия наследует все характеристики своего прототипа, но с этого момента она становится самостоятельной и может быть изменена. В некоторых реализациях копии хранят ссылки на объекты-прототипы, делегируя им часть своей функциональности; при этом изменение прототипа может затронуть все его копии.

                  когнитивщина какая-то.
                  Ответить
                  • Да ничего плохого в этом нет, на самом деле: классы -- необязательный инструмент для ООП, особенно для скриптушни (как завещал дедушка смолтоков)

                    TypeScript:
                    const petuh = {
                        name: "zolotoy_grebeshok",
                        iq: 944
                    };


                    Lua
                    local petuh = {
                        name = "zolotoy",
                        iq = 42
                      }


                    Ruby
                    require 'ostruct'
                    
                    petuz = OpenStruct.new
                    petuz.name = "zolotoy"
                    petuz.iq = 42


                    Perl
                    my $petuz = {
                        name => "zolotoy",
                        iq   => 42
                    };
                    bless $petuz;


                    C++..
                    struct
                    	{
                    		std::string name;
                    		int iq;
                    	} foo;
                    	foo.name = "petuz";
                    	foo.iq = 42;
                    Ответить
                    • Без классов не унаследуешь
                      Ответить
                      • наследование не нужно
                        Ответить
                        • У меня сейчас на работе натурально толкают в наш проект ненужную либу, один из плюсов которой в том, что "все сделано на абстрактных классах, достаточно только отнаследоваться"
                          Ответить
                          • Желаю тебе иерарихию из восьми классов. У каждого класса пусть будет по 10 методов, треть их которых -- виртуальные. Каждый наследник переопределяет один родительный метод. Удачи!


                            Питушки, а есть контракт в каком-то языке, говорящий "вот при переопределении родительскогт метода вызови его сначала(или в конце)"?
                            Ответить
                    • На lua написана какая хуета. просто локаль таблица.
                      Ответить
                      • а чем это не объект блядь?

                        нет, без шуток
                        давай определение обхъекта
                        Ответить
                        • Чего вы доебались-то?
                          вот вам и инкапустялция, и полиморфизм без всяких классов.

                          Да, наследования нет. Его без мета-таблиц не сделать. А нахуя оно нужно-то?
                          У вас в Go или Rust может наследование есть?
                          Скажете, там ООП нету?
                          local kat =  {
                              naam = "Joop",
                              heeft_honger = true
                            }
                          
                          function kat:heb_avondeten()
                            self.heeft_honger = false
                          end
                          
                          function kat:spreek()
                            print("Ik heet "..self.naam)
                            if self.heeft_honger then
                                print("Ik heb honger")
                            end
                          end
                          
                          function doe_alles(dier)
                              dier:spreek()
                          end
                          
                          doe_alles(kat)
                          kat:heb_avondeten()
                          doe_alles(kat)
                          
                          local hond = {}
                          function hond:spreek()
                              print("fuck u")
                          end
                          
                          doe_alles(hond)
                          Ответить
                          • Ик хейт Маззи. Ик хеб хонгер. Ик хау фан клоккен.
                            Ответить
                            • Я, присиис! Ху веет е дат? Спрейк е нэйдерландц?
                              Ответить
    • показать все, что скрытоНевероятное пришествие! Открыт онлайн сервис, позволяющий хранить заметки!
      Конечно, такое потрясающее новшество не может стоить дешево, потому готовьтесь заплатить $500. Правда, за 5 лет.
      https://roamresearch.com/
      Ответить
    • fun fact: retaining and releasing an NSObject takes ~30 nanoseconds on current gen Intel, and ~6.5 nanoseconds on an M1


      (про яблопроц и кокосовый рефекаунтинг)
      Ответить
    • Давайте в жопу ебаться.
      Ответить
      • Давай, расскажи мне о своих проблемах при ебле в жопу.
        Ответить
    • – Вот то-то и оно… – проговорила, Марго вытирая салфеткой губы, – любишь. А эта блядища этого не ценит!
      Ответить
    • 3oJIoTou_xyu, какие есть снеки вкусные китайские/японские/корейские?
      Ответить
    • показать все, что скрытоhttps://vk.com/wall-80799846_112589
      Ответить
    • Это так мило звучит всегда: "компания взяла джуна и всему его обучила", ну просто ангелы в этой компании а не руководство - целыми днями учили, уроки с ним делали, домашки проверяли, контрольные писали, экзамены проводили, работать не заставляли. Как было на самом деле: взяли человека на 8-часовой рабочий день, в течении которого он пашет не меньше остальных (естественно с поправкой на знания), а по вечерам, зачастую, он еще и самостоятельно (!!!) учится. И за все это платят ему в разы меньше чем остальным. А когда он набирается опыта и спрашивает про деньги, проще его послать и найти себе другого такого же раба с горящими глазами и желанием войти в айти, который готов носом землю рыть.
      Ответить
    • скрепы!
      https://pbs.twimg.com/media/GD9-sz_WYAAEKo1?format=jpg&name=medium
      Ответить
    • О, чушпанчик!
      Ответить

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