Size: a a a

2019 November 13

AG

Alexander Gladysh in Lua in Moscow
про C API немного раскрой мысль плз
источник

VZ

Vadim Zborovskii in Lua in Moscow
я должен вызвать из C API функцию, при этом я могу передать явно только "параметр" (x),  но не  "состояние" (state). Значит,  оно должно инкапсулироваться в вызываемой функции. Навскидку есть два способа инкапсуляции, которые приведены выше.
источник

AG

Alexander Gladysh in Lua in Moscow
хочешь ли ты как проектировщик C API навязывать пользователю то или иное решение?
источник

VZ

Vadim Zborovskii in Lua in Moscow
можно, конечно, и в самом C вызывать lua_pushcclosure, но здесь этот вариант не проходит по определенным причинам. всё должно в lua делаться.
источник

VZ

Vadim Zborovskii in Lua in Moscow
нет, с точки зрения  C API лишь бы объект был вызываемым. Хочу понять, как пользователю делать лучше.
источник

AS

Anatoliy Shipitcyn in Lua in Moscow
Vadim Zborovskii
Уважаемые разработчики на Lua, что вы думаете про  замыкания VS таблицы с метаметодом __call? Какие преимущества, недостатки у этих подходов? Кто чем пользуется?
А зачем прячем контекст?
источник

AG

Alexander Gladysh in Lua in Moscow
Vadim Zborovskii
нет, с точки зрения  C API лишь бы объект был вызываемым. Хочу понять, как пользователю делать лучше.
тогда ты недостаточно описал юзкейс
источник

VZ

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

AG

Alexander Gladysh in Lua in Moscow
способы эквивалентные, есть плюсы и минусы и там и там
источник

VZ

Vadim Zborovskii 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 понять, нужно ли заморачиваться и как, невозможно
источник

VZ

Vadim Zborovskii in Lua in Moscow
Есть написанное внешнее для пользователя API, оно вызывает функции с определенной сигнатурой. С точки зрения API, только сигнатура и важна. Пользователю может захотеться написать такую функцию, где еще и контект понадобится, при этом в сигнатуре его нет. Значит, пользователь хочет инкапсулировать его в вызываемый объект.
источник

VZ

Vadim Zborovskii in Lua in Moscow
А с точки зрения понятности/простоты для "среднего" пользователя?
источник

VZ

Vadim Zborovskii in Lua in Moscow
Какие потенциальныне преимущества у варианта с метаметодом?
источник
2019 November 14

AG

Alexander Gladysh in Lua in Moscow
Vadim Zborovskii
Какие потенциальныне преимущества у варианта с метаметодом?
Тебе он так мил? :)
источник

VZ

Vadim Zborovskii in Lua in Moscow
на всякий случай
источник

AG

Alexander Gladysh in Lua in Moscow
Ну это, тогда я не понимаю въедливости
источник

AG

Alexander Gladysh in Lua in Moscow
Это все очень абстрактно
источник