通过利用lua表构造的数组部分,是否有任何语法糖可以使用面向对象的lua?
-- foo_index == number
local foo_index = global_bar_object_prototype.foo;
bar[foo_index]("hello world"];
--vs.
-- file 2 bar.foo type == function
bar.foo("hello world");
-- both versions call the same function with the same input
我希望luajit可以进行inter chunk字符串实习以优化/缓存字符串密钥访问,从而为其提供类似数组的访问特性。然而,我的天真基准证明了这一假设。我希望我的基准逻辑能够得到满足,在这种情况下,我不需要寻找语法糖。
使面向对象lua的习语具有O(1)(函数查找)特性,以实现高性能脚本编写目的?我确信游戏界面程序员已经亲眼目睹了这些。
答案 0 :(得分:1)
我不确定我是否理解这个问题,但如果您在询问是否有办法将条形图表定义为对象,那么
bar[foo_index]("hello")
会起作用,是的有一种方法:bar的metatable应该定义__index,这样它可以将整数作为键并返回相关的方法。在“构造函数”栏中的某处,您可以定义索引到“方法”的映射; __index将查看该映射并返回该函数。
您可能还会添加一个方法,该方法将获取方法名称并返回相应的索引,因此调用者不必知道映射构造函数创建的内容:
foo_index = bar.getMethodIndex('foo')
bar[foo_index]("hello")
lua允许的另一个优化是
foo_meth = bar.foo
foo_meth(bar, "hello")