Size: a a a

2019 June 28

VZ

Vadim Zborovskii in Lua in Moscow
Alexander Gladysh
неявно предполагается, что ipairs — это не численный for
да, именно в этом и есть главная засада
источник

VZ

Vadim Zborovskii in Lua in Moscow
и тогда следующий вопрос -- какой смысл в применении ipairs к userdata, если у него вообще нет табличной семантики?
источник

VZ

Vadim Zborovskii in Lua in Moscow
у userdata то есть
источник

AG

Alexander Gladysh in Lua in Moscow
вот смысл "виртуализации" в том, чтобы сделать возможным создание юзердаты, семантически неотличимой от таблицы
источник

VZ

Vadim Zborovskii in Lua in Moscow
дык да, ipairs нарушает абстракцию
источник

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
что именно ожидает ipairs, что нарушает абстракцию? и какую именно абстракцию это нарушает?
источник

AG

Alexander Gladysh in Lua in Moscow
в частности мне непонятно, что такое "стандартная табличная семантика" применительно к ipairs
источник

AG

Alexander Gladysh in Lua in Moscow
(это не может быть длина, поскольку ipairs этим понятием не оперирует)
источник

VZ

Vadim Zborovskii in Lua in Moscow
да, я поторопился -- длина определена только для таблиц без дырок, а ipairs для любых
источник

AG

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

VZ

Vadim Zborovskii in Lua in Moscow
=> неожиданно только то, что ipairs не имеет (вообще никакого) отношения к длине
источник

AG

Alexander Gladysh in Lua in Moscow
да, он маскируется под численный цикл, им не являясь
источник

VZ

Vadim Zborovskii in Lua in Moscow
но на стандартных таблицах без дырок и метаметодов это работает
источник

VZ

Vadim Zborovskii in Lua in Moscow
т.е. настоящая проблема -- простой юзер скорее всего не понимает семантику ipairs (и поэтому harmful)
источник

AG

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

AG

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

AG

Alexander Gladysh in Lua in Moscow
поэтому у нас в гайдлайнах он запрещен
источник