Что бы облегчило действительно работать с Lua? - PullRequest
8 голосов
/ 08 октября 2010

Я люблю Lua, использую его для все большего и большего количества проектов в качестве основного (не встроенного) языка.Мой текущий проект приближается к 10000 строк и, вероятно, закончится примерно на 15000 строк.Что вы нашли полезным при разработке в Lua в таких масштабах?Против чего вы столкнулись и какие решения вы нашли?Я имею в виду инструменты разработки, языковые функции и методы, сторонние модули?

Мой топ 3:

  1. strict.lua - я использую модифицированную версиюэтот.Без предупреждения о доступе к неиспользуемым / непреднамеренным переменным я бы сошел с ума.

  2. сопрограмм - не для их многопоточности, а для их непрерывности.Очень полезно для упрощения реализации конечных автоматов.

  3. функция сериализации - незаменима для выгрузки содержимого таблицы и для сохранения таблиц на диске (я использую это много раз, когда в противном случае я, вероятно,достиг базы данных).

Мой список пожеланий:

  1. Визуальный отладчик для OS X. Сейчас я использую print (), ноотлично подойдет отладчик, который позволит мне пошагово просматривать исходные файлы.

  2. Оператор continue.Использование повторения ... пока истинный обходной путь не будет уродливым, а слишком много вложенных if станет сложным и уродливым.

  3. Метаметод, который вызывается при изменении существующего элемента таблицы.

Любые другие советы для более масштабной разработки Lua?

Ответы [ 3 ]

6 голосов
/ 08 октября 2010

Оператор продолжения.Использование повторения ... пока истинный обходной путь не будет уродливым, а слишком много вложенных if станет сложным и уродливым.

Пусть ваше тело цикла будет вызовом функции;затем return становится continue.

Метаметод, который вызывается при изменении существующего члена таблицы.

Вы можете реализовать это самостоятельно, используя прокси-таблицу Bкоторый хранит все фактические данные для таблицы A - метаметоды newindex / index на A перехватывает запись / чтение и изменение / поиск из таблицы B вместо этого.Поскольку A никогда ничего не записывает в него, все записи записываются в newindex.

3 голосов
/ 28 августа 2012

На основе ваших топ3 и списков пожеланий, вот продукты, над которыми я работал, и могу рекомендовать (по крайней мере, на основе полученных отзывов):

  1. MobDebug : удаленный отладчик на основе RemDebug, но с различными исправлениями и новыми функциями.
  2. ZeroBrane Studio : интегрированная среда разработки Lua, которая предоставляет отладчику все ожидаемые функции (StepIn / Over / Out, Break, Watch, Stack, Breakpoints, удаленная оболочка, поддержка сериализации, поддержка сопрограмм и многое другое) и работает на OSX и Windows. Он обеспечивает бесшовную интеграцию с MobDebug в IDE. Я опубликовал несколько скринкастов, показывающих это в действии: http://notebook.kulchenko.com/zerobrane/live-coding-in-lua-bret-victor-style, http://notebook.kulchenko.com/zerobrane/love2d-debugging.
  3. Змей : компактный и мощный сериализатор. ZeroBrane Studio использует Serpent для отображения сложных структур данных в окнах консоли и стека.
  4. ZeroBrane Studio включает в себя статический анализатор (на основе metalua и lua-inspect), который позволяет обнаруживать те же (и более) проблемы, которые обнаруживает строгий .lua, но во время разработки (до запуска код).
  5. С точки зрения отслеживания изменений, MobDebug предоставляет способ сделать это для любого типа переменных (не только для таблицы). Я описал это в другом ТАК сообщении . Эта функциональность пока недоступна в ZeroBrane Studio.
1 голос
/ 08 октября 2010

Возможные варианты отладки для OS X:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...