Lua 函数名后没有括号

Lua 函数名后没有括号,lua,Lua,我希望开发一款使用Lua作为脚本语言的游戏 我有以下声明: foe:add_component 'render_info':set_scale(0.5) 我理解:意味着调用父对象将作为第一个参数传递给被调用的方法。但是在本例中,render_info后面没有括号;这似乎是一个简单的字符串文字,并在其上调用了一个方法,这似乎毫无意义 我也理解元表和元方法的概念,这可能是一个例子。但是,我发现没有“空白”操作符可以覆盖。我想知道关于Lua的语法,我是否遗漏了一些重要的东西 上面的代码语句是什么意思

我希望开发一款使用Lua作为脚本语言的游戏

我有以下声明:

foe:add_component 'render_info':set_scale(0.5)
我理解
意味着调用父对象将作为第一个参数传递给被调用的方法。但是在本例中,
render_info
后面没有括号;这似乎是一个简单的字符串文字,并在其上调用了一个方法,这似乎毫无意义

我也理解元表和元方法的概念,这可能是一个例子。但是,我发现没有“空白”操作符可以覆盖。我想知道关于Lua的语法,我是否遗漏了一些重要的东西


上面的代码语句是什么意思?每个部分是什么,它在做什么?

如果唯一的参数是字符串或表构造函数,则函数调用不需要括号。不过,手册中可能没有这么清楚地说明:

下面是一个您可以尝试的小示例代码:

foe = {}
function foe:add_component(str)
    print(str)
    return foe
end
function foe:set_scale(scale)
    print(scale)
    return foe
end
foe:add_component 'render_info':set_scale(0.5)

如果函数只有一个参数,并且该参数是文本字符串或表构造函数,则可以在函数调用时省略括号

引用lua参考手册:

形式为f{fields}的调用是f({fields})的语法糖;那个 是,参数列表是一个新表。形式的召唤 f'string'(或f“string”或f[[string]])是 f(“字符串”);也就是说,参数列表是单个文本字符串

这相当于你的电话:

foe:add_component('render_info'):set_scale(0.5)