Lua中的":"是什么意思

Eng*_*ine 2 lua

我是Lua的新手,我从事过项目工作,我有一个问题,不知道":"我没有在手册中找到它,例如如何解释这段代码:

res:template{
        main = 'functionform.html',
        functionjs = '_functionform.js',
        functionform = '_functionform.html'
    }
Run Code Online (Sandbox Code Playgroud)

Wil*_*osa 6

Lua中的结肠操作员PIL是一种小的合成糖.它用于面向对象的Lua,使常规函数调用看起来更像是方法调用.它的作用是self在调用函数时将对象作为参数传递.举个例子:

a.myFunction(a, 'foo')
Run Code Online (Sandbox Code Playgroud)

它相当于:

a:myFunction('foo')
Run Code Online (Sandbox Code Playgroud)

在您的示例中,方法调用省略了括号,因为它的唯一参数是表PIL,因此没有冒号运算符的函数调用将类似于:

res.template(res, {
        main = 'functionform.html',
        functionjs = '_functionform.js',
        functionform = '_functionform.html'
    })
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这种小合成糖非常方便


Eta*_*ner 5

2.5.8节中的手册:

Lua中的函数调用具有以下语法:

functioncall :: = prefixexp args

在函数调用中,首先计算prefixexp和args.如果prefixexp的值具有type函数,则使用给定的参数调用此函数.否则,调用prefixexp"call"元方法,将prefixexp的值作为第一个参数,后跟原始调用参数(参见§2.8).

表格

functioncall :: = prefixexp`:'名称args

可以用来称呼"方法".调用v:name(args)是v.name(v,args)的语法糖,除了v只计算一次.

所以res:template{}是一样的res.template(res, {}).