什么会让真正使用Lua的工作更容易?

我热爱 Lua,将其用作许多项目的主要语言(而非嵌入式)。我的当前项目将接近10,000行,很可能最终达到约15,000行。在这种规模下开发Lua时,你发现了什么有用的东西?你遇到了什么问题,又找到了什么解决方案?我正在考虑开发工具、语言特性和技巧、第三方模块。

我的前三名:

  1. strict.lua -我使用修改版。如果不能提示未使用/意外变量的访问,我会疯掉。

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

  3. 序列化函数 -对于转储表内容和将表持久化到磁盘非常必要(在其他情况下我很可能会使用数据库)。

我的愿望单:

  1. 适用于 OS X 的可视化调试器。现在我正在使用print()语句,但如果有一个让我可以单步跟踪源文件的调试器会很棒。

  2. continue语句。使用repeat ... until true的解决方法很丑陋,太多嵌套的if语句变得复杂而丑陋。

  3. 当修改现有表成员时触发的元方法。

还有其他的关于大规模Lua开发的提示吗?

原文链接 https://stackoverflow.com/questions/3887872

点赞
stackoverflow用户148870
stackoverflow用户148870

一个 continue 语句。使用 repeat...until true 的解决方案有点丑陋,并且太多的嵌套 ifs 会变得复杂和难看。

将循环体化为函数调用;那么 return 就变成了 continue

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

您可以自己实现这个功能,通过使用一个代理表 B 来存储表 A 的所有实际数据 - A 上的新索引/索引元方法拦截写入/读取并修改/查找来自表 B。由于 A 没有任何被写入的东西,所有的写操作都会命中新索引。

2010-10-08 05:16:49
stackoverflow用户1491
stackoverflow用户1491

在 OS X 上可能的调试选项:

2010-10-08 14:19:26
stackoverflow用户1442917
stackoverflow用户1442917

根据您的“前三”和愿望清单,以下是我工作并可以推荐的产品(至少是基于我收到的反馈):

  1. MobDebug:一个远程调试器,基于RemDebug,但具有各种修复和新功能。
  2. ZeroBrane Studio:一款Lua IDE,提供一个带有所有预期功能的调试器(StepIn/Over/Out,Break,Watch,Stack,Breakpoints,remote shell,序列化支持,协程支持等)并运行在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在控制台和堆栈窗口中显示复杂的数据结构。
  4. ZeroBrane Studio包括一个静态分析器(基于metalua和lua-inspect),它允许您在开发期间(在运行代码之前)检测严格.lua检测到的相同问题(及更多)。
  5. 在观察变化方面,MobDebug提供了一种方法来观察任何类型的变量(不仅仅是table)。我在另一个SO post中描述了它。目前ZeroBrane Studio还不支持此功能。
2012-08-27 20:13:22