面向对象的Lua有多安全?

时间:2013-12-15 08:27:49

标签: oop lua

Lua初学者,我正在研究lua。 我的问题是:因为Lua中的一个对象只是一个表, 可以在运行时添加新字段。如果我的代码中有拼写错误,而不是更改字段,我会创建一个新字段,这不会带来混乱吗? ;) 如果我在程序中达到这一点,我只能在运行时找出错误。 (当然,表格概念还有其他好处,比如没有反思的元编程,但我的问题是关于“安全性”或可预测性。)

这是正确的结论吗?

2 个答案:

答案 0 :(得分:4)

是的,这是正确的。 使用动态类型语言时,您需要进行一系列广泛的单元测试,以确保涵盖所有可能的场景并防止您所描述的那种混乱。

如果你想保护自己,我建议你看一下静态类型的语言,比如java,c#或scala,让编译器为你做类型检查。

这就是Twitter从Ruby迁移到Scala的原因 - 随着项目的发展,越来越难以跟踪只能在运行时使用动态类型语言验证的错误 - 但可以在编译时通过静态语言编译器。


动态类型语言基于duck typing

  

如果它像鸭子一样走路,像鸭子那样嘎嘎叫,它就是一只鸭子

我更喜欢this version

  

如果它像鸭子一样走路,像鸭子一样嘎嘎叫,它可能会在运行时抛出异常。

答案 1 :(得分:2)

Lua为您提供了机制,使其具有至少与其他动态编程语言一样多的安全性。例如,请参阅here

错误仍然会在运行时发生,因此您需要一个具有良好覆盖率的测试套件。

有些项目要向Lua添加静态类型。创建metalua的Fabien Fleutot在最近的Lua Workshop上展示了他的作品。参见: