Size: a a a

2019 June 28

VZ

Vadim Zborovskii in Lua in Moscow
руки дойдут, напишу им в рассылку
источник

VZ

Vadim Zborovskii in Lua in Moscow
вот пример собственно:
источник

VZ

Vadim Zborovskii in Lua in Moscow
local tbl = setmetatable({}, {
     __index = function(t, k)
        return 0
     end,
     __len = function(t)
        return 10
     end,
})

print('loop to length...')
for k = 1, #tbl do
  print(k, tbl[k])
end

print('ipairs loop ')
for k, v in ipairs(tbl) do
  -- endless loop here ....
  print(k, v)
end
источник

AG

Alexander Gladysh in Lua in Moscow
это загадочно, да
источник

AG

Alexander Gladysh in Lua in Moscow
с другой стороны, для этого есть __ipairs (емнипс)
источник

VZ

Vadim Zborovskii in Lua in Moscow
который в 5.3 deprecated
источник

VZ

Vadim Zborovskii in Lua in Moscow
и работает только в реж совместимости
источник

AG

Alexander Gladysh in Lua in Moscow
во, этого я не помнил
источник

AG

Alexander Gladysh in Lua in Moscow
а что в 5.4?
источник

VZ

Vadim Zborovskii in Lua in Moscow
The ipairs iterator now respects metamethods and its __ipairs metamethod has been deprecated.  - из мануала 5.3
источник

VZ

Vadim Zborovskii in Lua in Moscow
в 5.4 слов-то таких нет. Думаю, выкинули __ipairs  с концами
с  pairs ситуация другая: метаметод __pairs есть (не deprecated), а без него используется next, который метаметоды игнорирует afaik (т.е. работает с низкоуровневым представлением таблицы)
источник

VZ

Vadim Zborovskii in Lua in Moscow
я не удивлюсь, если Роберто считает, что ipairs considered harmful
источник

AG

Alexander Gladysh in Lua in Moscow
вот внезапно нет
источник

AG

Alexander Gladysh in Lua in Moscow
как я понимаю
источник

AG

Alexander Gladysh in Lua in Moscow
не считает
источник

AG

Alexander Gladysh in Lua in Moscow
(я лично — считаю, если что)
источник

VZ

Vadim Zborovskii in Lua in Moscow
как бы то ни было, мне кажется, что это скорее бага. напишу в рассылку чуть позже с примерами
источник

AG

Alexander Gladysh in Lua in Moscow
ага
источник

AG

Alexander Gladysh in Lua in Moscow
есть ощущение, что Lua Team периодически теряет из виду полную виртуализацию как цель
источник

AG

Alexander Gladysh in Lua in Moscow
(если это правильный термин)
источник