【问题标题】:Weird function "call" in Lua example from official docs来自官方文档的 Lua 示例中的奇怪函数“调用”
【发布时间】:2022-06-15 21:35:09
【问题描述】:

Lua 中元表的官方documentation 显示如下代码:

Set = {}
    
    function Set.new (t)
      local set = {}
      for _, l in ipairs(t) do set[l] = true end
      return set
    end
    
    function Set.union (a,b)
      local res = Set.new{}
      for k in pairs(a) do res[k] = true end
      for k in pairs(b) do res[k] = true end
      return res
    end

我不清楚Set.new{} 的语法。 new 是一个函数,通常使用括号 () 调用函数。这是什么语法,它在lua.org 中记录在哪里?

【问题讨论】:

    标签: lua


    【解决方案1】:

    Lua 允许将字符串文字或表构造函数作为其唯一参数传递给函数的可怕语法,而无需用括号括起来。

    你会发现它隐藏在Programming in Lua: 5 – Functions

    如果函数只有一个参数,并且该参数是文字字符串或表构造函数,则括号是可选的:

       print "Hello World"     <-->     print("Hello World")
       dofile 'a.lua'          <-->     dofile ('a.lua')
       print [[a multi-line    <-->     print([[a multi-line
        message]]                        message]])
       f{x=10, y=20}           <-->     f({x=10, y=20})
       type{}                  <-->     type({})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 2014-06-14
      相关资源
      最近更新 更多