什么会让Lua更容易合作?

时间:2010-10-08 05:12:35

标签: lua

我喜欢Lua,将它用作越来越多的项目作为主要(非嵌入式)语言。我目前的项目接近10,000行,可能会以约15,000行结束。在Lua中以这种规模进行开发时,您发现了什么有用的东西?你有什么打击你的头,你找到了什么解决方案?我正在考虑开发工具,语言功能和技术,第三方模块?

我的前三名:

  1. strict.lua - 我使用了这个的修改版本。没有被提醒访问未使用/非预期的变量我会发疯。

  2. coroutines - 不是因为它们的多线程能力,而是因为它们的可持续性。对于简化状态机的实现非常有用。

  3. 序列化功能 - 对于转储表内容以及将表持久保存到磁盘是必不可少的(除非我可能已经到达数据库,否则我会多次使用它。)

  4. 我的心愿单:

    1. OS X的可视调试器。我现在正在使用print(),但是让我单步浏览源文件的调试器会很棒。

    2. 继续声明。使用重复...直到真正的解决方法是丑陋的,并且太多嵌套ifs变得复杂和丑陋。

    3. 修改现有表成员时调用的元方法。

    4. 大规模Lua开发的其他任何提示?

3 个答案:

答案 0 :(得分:6)

  

继续声明。使用   重复...直到真正的解决方法   丑陋,嵌套ifs太多了   复杂而丑陋。

让你的循环体成为函数调用;然后return变为continue

  

一种在调用时调用的元方法   现有的表成员被修改。

您可以使用代理表B自己实现这一点,代理表B存储表A的所有实际数据 - 新的索引/索引元方法在A拦截写入/读取和修改/查找表B。由于A从未写入任何内容,因此所有写入都会触及newindex。

答案 1 :(得分:3)

根据您的top3和愿望清单,以下是我工作过的产品并且可以推荐(至少根据我收到的反馈):

  1. MobDebug:基于RemDebug的远程调试器,但具有各种修复和新功能。
  2. ZeroBrane Studio:一个Lua IDE,它为调试器提供所有预期的功能(StepIn / Over / Out,Break,Watch,Stack,Breakpoints,remote shell,serialization support,coroutine support等)并在OSX上运行和Windows。它在IDE中提供与MobDebug的无缝集成。我发布了几个截屏视频,展示了它的实际效果:http://notebook.kulchenko.com/zerobrane/live-coding-in-lua-bret-victor-stylehttp://notebook.kulchenko.com/zerobrane/love2d-debugging
  3. Serpent:一个紧凑而强大的序列化程序。 ZeroBrane Studio使用Serpent在Console和Stack窗口中显示复杂的数据结构。
  4. ZeroBrane Studio包含static analyzer(基于metalua和lua-inspect),它允许您检测strict.lua检测到的相同问题(以及更多),但在开发期间(运行代码之前)。
  5. 在观察更改方面,MobDebug为任何类型的变量(不仅仅是表)提供了一种方法。我在另一个SO post中描述过它。 ZeroBrane Studio尚未提供此功能。

答案 2 :(得分:1)

OS X的可能调试选项: