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

    +11

    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
    math.randomseed(os.time())
    
    local a = {}
    
    a[#a+1] = function() --create
    	local t = {}
    	t[#a+1] = math.random(1,100)
    	t[#a+2] = 'хуй'
    	return setmetatable(t,{__index = a})
    end
    
    a[#a+1] = function() --empty function
    end
    
    local t = a[1]()
    for k,v in ipairs(t) do
    	print(k,v) --показывает все элементы таблицы как положено
    end
    print(#t) --0
    print(t[4]) --хуй

    Загадка: почему длина таблицы t = 0?

    ps. # - это оператор возращает длину

    Запостил: Sfabrikan, 23 Июля 2016

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

    • луа - говно
      Нехуя непонятно
      Ответить
    • > почему длина таблицы t = 0
      > setmetatable
      Потому что доигрались с метатаблицами?
      Ответить
      • почти, но все намного хитрее, ведь таблица t возращается
        function x()
        local t = {"kaka"}
        return setmetatable(t,{__index = x})
        end
        
        print(#x()) --1
        Ответить
    • Я знаю ответ! Только я не скажу
      Ответить
      • Ладно скажу ответ.
        Потому что 1 и 2 элемента у t не существует
        а # вернет длину до первого разрыва!
        Соответственно первый разрыв в 1 элементе, по этому длина 0.
        А в цикле как бы показывается что якобы есть 1 и 2 элемент, но это пиздешь, это лишь ссылки на элементы a.
        Ответить
    • Код говно.
      ВНИМАНИЕ. ГОВНОКОДНАДЗОР ПРЕДУПРЕЖДАЕТ! ЧЕРЕЗМЕРНОЕ ЗЛОУПОТРЕБЛЕНИЕ ОПРЕДЕЛЕНИЯ ДЛИНЫ ВРЕДИТ БЫСТРОДЕЙСТВИЮ!
      Ответить
    • Кто постарался тут ботами и выпилил несколько ЯП от сюда?
      Ответить
    • >> os.time()
      Не шути со временем, не шути сука со временем, Понял? Пидарасина.
      https://youtu.be/omI0fmiArJM
      Ответить

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