Lua初学者,我正在研究lua。 我的问题是:因为Lua中的一个对象只是一个表, 可以在运行时添加新字段。如果我的代码中有拼写错误,而不是更改字段,我会创建一个新字段,这不会带来混乱吗? ;) 如果我在程序中达到这一点,我只能在运行时找出错误。 (当然,表格概念还有其他好处,比如没有反思的元编程,但我的问题是关于“安全性”或可预测性。)
这是正确的结论吗?
答案 0 :(得分:4)
是的,这是正确的。 使用动态类型语言时,您需要进行一系列广泛的单元测试,以确保涵盖所有可能的场景并防止您所描述的那种混乱。
如果你想保护自己,我建议你看一下静态类型的语言,比如java,c#或scala,让编译器为你做类型检查。
这就是Twitter从Ruby迁移到Scala的原因 - 随着项目的发展,越来越难以跟踪只能在运行时使用动态类型语言验证的错误 - 但可以在编译时通过静态语言编译器。
动态类型语言基于duck typing:
如果它像鸭子一样走路,像鸭子那样嘎嘎叫,它就是一只鸭子
我更喜欢this version:
如果它像鸭子一样走路,像鸭子一样嘎嘎叫,它可能会在运行时抛出异常。
答案 1 :(得分:2)
Lua为您提供了机制,使其具有至少与其他动态编程语言一样多的安全性。例如,请参阅here。
错误仍然会在运行时发生,因此您需要一个具有良好覆盖率的测试套件。
有些项目要向Lua添加静态类型。创建metalua的Fabien Fleutot在最近的Lua Workshop上展示了他的作品。参见: