使用点运算符调用lua字符串方法

时间:2016-09-02 20:34:33

标签: lua standard-library method-overriding

是否可以覆盖标准字符串类的某些方法,以便可以使用点运算符调用它们? 例如:

s = "hello world"
print(s.len())

1 个答案:

答案 0 :(得分:1)

对于非table或完整userdata的类型,每个类型都有一个metatable。也就是说,不是每个单独的字符串都有自己的元表,所有字符串都共享相同的元表。

默认情况下,Lua标准字符串库将此元表分配给string表。因此,如果需要,您可以向string添加条目。

当然,len毫无意义,因为我们有#来计算它。如果要将字符串作为第一个参数传递,则需要使用:调用语法。