make lua方法可以直接改变参数

时间:2013-06-21 16:50:05

标签: methods lua auto-increment pass-by-reference meta-method

如何在lua中创建像string.gsub(...)这样的方法?

我希望我的函数可以更改我将它们传递给函数的参数。

我知道字符串和数字类型变量在函数中按名称(CALL BY VALUE)传递,

但我不知道gsub如何更改(直接在字符串类型变量中应用)当我们尝试使用s:gsub(...) s变量并受gsub(...)方法影响时!

我想创建一个方法Inc(...)当我使用它时ex:Inc() ex(number var) 增加1 !!!

帮我实现这个...我想要ex变量(例如:ex = 1)是数字(不是表格)

ex = 1
ex:Inc()
print(ex) -- ex == 2

谢谢。

1 个答案:

答案 0 :(得分:1)

s:gsub(...) 不会影响s,除非您执行s=s:gsub(...)。试试这个:

s="hello"
print(s:gsub("[aeio]","-"))
print(s)

在Lua中,所有参数都按值传递。无法从函数中更改变量的值。 (您可以更改表的内容,但不能更改表本身。)