Luсky
Я на и на инстеде бизнесапы фигачил
Luсky
утилиты для работы
Luсky
Специализированные калькуляторы и б.д. к ним.
Sergey
Всем привет! Такой вопрос: я определил для таблицы метаметод __pairs и он работает с pairs, а вот как быть с ipairs?
Sergey
Увы, нет. Начиная с 5.3😔
Aydar
Увы, нет. Начиная с 5.3😔
Вроде с 5.2, возможно в luajit есть, если 5.1 то только кастомный итератор.
Snusmumriken
Увы, нет. Начиная с 5.3😔
local function myipairs_next(tbl, index) index = index + 1 local v = tbl[index] if not v then return end return index, v end local metatable = {} function metatable:myipairs(index) index = index or 0 index = index > 0 and index - 1 or index return myipairs_next, self, index % #self end local mytable = setmetatable({1, 2, 3, 4, 5}, {__index = metatable}) for i, v in mytable:myipairs(-4) do print(i, v) end > 2 2 > 3 3 > 4 4 > 5 5
Sergey
Забыл добавить - как минимум. 5.2 не пользовал.
Sergey
Хех, мне нужен именно ipairs, такой вариант не прокатывает...
Snusmumriken
for i = 1, #t do local v = t[i] ... end
Sergey
Да это я всё понимаю, но мне нужно именно запретить другим юзерам пользоваться ipairs. Да, я могу запретить __index, но тогда не смогу индексировать таблицу.
Snusmumriken
local oldipairs = ipairs function ipairs(t, ...) local mt = getmetatable(t) if mt and mt.__ipairs then return mt.__ipairs(t, ...) end return oldipairs(t, ...) end
Sergey
Да, это уже лучше, спасибо!
Snusmumriken
Ещё можно сделать local ipairs = ipairs _G.ipairs = nil Всё, ты своровал функцию и убрал её из глобал скоупа
Snusmumriken
Ещё можно выдать пользователям отдельный ENV, где всё почищено от лишнего.
Вилби
В чем преимущество Луа перед Питоном?
Sergey
В мануале к 5.3 есть загадочная фраза The ipairs iterator now respects metamethods and its __ipairs metamethod has been deprecated. . Что за этим кроется - не очень понимаю. Я тоже уважаю метаметоды ), но всё же...
ベクゾッド
Snusmumriken
В чем преимущество Луа перед Питоном?
Преимущество луа перед питоном во всём. Верно и обратное.
Вилби
Преимущество луа перед питоном во всём. Верно и обратное.
Как на счет количества библиотек и инструкций? Просто идет огромная пропоганда питона. И ничего о Луа
Snusmumriken
Потому что питон распиарен и на самоподдуве. Всё нормально.
Snusmumriken
Примерно идентичен.
Вилби
Хм...
Snusmumriken
Луа местами попроще синтаксически и механически, но нет либ, которые снижают порог в питон.
Snusmumriken
Стандартных.
Snusmumriken
И это тоже обосновано.
Вилби
Без них можной обойтись?
Snusmumriken
Смотря где.
Вилби
Сильно влияет на скорость производительности прогера?
Snusmumriken
Смотря что пишет )
Вилби
😁
Snusmumriken
В среднем, у питона "производительность прогера" выше, потому что куча либ которые можно дёрнуть. С луями надо ставить и уже потом дёрнешь. И не факт что сразу заведётся.
Вилби
Смотря что пишет )
Если взять этот унылый пиар "ИИ"
Snusmumriken
Вот тут абсолютно пофигу.
Snusmumriken
Изначально на луа был торч, потом его портировали на питон и начали пиарить питон как топ для мл/матана. И вот это приколдес такой значительный.
Вилби
Говорят Питон более ресурсоемок к железу?
Snusmumriken
Да, а ещё он более ресурсоёмок по производительности. Но на это пофигу, потому что вся требовательная ерунда делается нативным кодом на сишке и там и там. На луях и питоне ты пишешь сценарии дёргающие нативную ерунду.
Вилби
Луа на чисто Си создан? Не на ++?
Snusmumriken
Чисто на Си.
Snusmumriken
Но и на пофигу, потому что это нативная фигня. Писать же биндинги и нетривиальную ерунду в тысячу раз проще на луа чем на питоне. По производительности и экономичности самих интерпретаторов с JIT'ом — luajit > pypy.
Вилби
C Classic
Блин, хотел лайк поставить
Вилби
Извиняюсь
Вилби
Есть ли смысл вообще входить с библиотек? Или качественее фундаментально?
Snusmumriken
Я всегда изучаю фундамент первым делом, просто потому что библиотеки — дело наживное, плюс зависимы от платформы.
Sergey
C Classic
Common subset of C and C++.
Вилби
Очень мало видео по Луа, иногда сложно понять. Хотя принцип самого когда очень прост
Luсky
Буквари в зет-либ
Snusmumriken
Очень мало видео по Луа, иногда сложно понять. Хотя принцип самого когда очень прост
Самая сложная тема луа — метатаблицы. На хабре есть моя статья для примерного вкуривания. В общем-то всё, остальное изучается школьником за неделю.
Hello, World! 🎄
Очень мало видео по Луа, иногда сложно понять. Хотя принцип самого когда очень прост
Тут нечего понимать как по мне, всё легко. Таблицы только очень гибкие и самое важное как по мне их изучить.
Snusmumriken
https://habr.com/ru/post/346892/
Вилби
https://habr.com/ru/post/346892/
Спасибо за труд ✊
Luсky
А дальше - тык-тык-тык.
Вилби
Самая сложная - понять, что луа+си
Мне кажется это самая лучшая комбинация языков. +java
Александр
Как на счет количества библиотек и инструкций? Просто идет огромная пропоганда питона. И ничего о Луа
Просто питону повезло - его начали активно использовать учёные, в нём есть более полноценное ООП, огромная встроенная библиотека и разработчики которые либеральны к ожирению языка сахаром. Луа же позиционируется как компактный, встраиваемый - эдакий Си от мира скриптовых языков, не считая того, что скриптовые языки минимализм не так красит.
Вилби
Остальное какие то специфические дебри
Snusmumriken
Мне кажется это самая лучшая комбинация языков. +java
Жава тащит за собой огро-о-о-о-омный стек всего. И выполняет примерно те же задачи что и луа. Примерно с такой же скоростью.
Sergey
И да, из Луа можно выкинуть всё, что не нужно, часть стандартных библиотек и даже парсер! Ну это если сильное ограничение по памяти. В отличии от Пайтона он очень маленький).
Luсky
а ещё можно луажит ффи и либы ваааау
Вилби
А питон на чем написан?
Snusmumriken
Зависит от реализации.
Александр
И да, из Луа можно выкинуть всё, что не нужно, часть стандартных библиотек и даже парсер! Ну это если сильное ограничение по памяти. В отличии от Пайтона он очень маленький).
ну есть всякие micropython. И тут полагаю всё же подход выкидывания плюшек, при их обилии лучше, чем неоднородное расширение языка
Hello, World! 🎄
Hello, World! 🎄
А питон на чем написан?
На си тоже вроде
Александр
А питон на чем написан?
Каноничный интерпретатор на Си, в целом бывают реализации на питоне(PyPy), джаве(Jython) и других языках в зависимости от целей разработчиков
Snusmumriken
А питон на чем написан?
Карочи, маленькая прочистка мозгов: язык это просто стандарт. Соглашение что этот текст приведёт к такому поведению, всё. Дальше уже идут конкретные реализации. Есть много интерпретаторов луа — PUC-эталонная, Luajit, реализации на шарпе и на чём-то там ещё, даже на Rust. Они обладают немного разным функционалом и различаются по производительности.
Snusmumriken
То же самое с питоном. Есть много версий питона, на С/++, Java и куче всего ещё.
Hello, World! 🎄
А питон на чем написан?
Cкачал исходники, там C
Александр
Cкачал исходники, там C
Интерпретаторы разные бывают. По мимо эталона есть PyPy, CPython, Jython и другие