【问题标题】:detecting single nil argument in lua在 lua 中检测单个 nil 参数
【发布时间】:2012-09-19 07:54:19
【问题描述】:

是否可以区分来电

myFunc()

来自

myFunc(nil)

在 myFunc 函数内部?

【问题讨论】:

  • 我不这么认为。此外,你为什么要这样做?
  • 这是一个奇怪的案例,我正在用 getter / setter 绘制一个基本系统,lua 使用元方法 __index、__newindex 对此有很好的支持。但是,我想保持简单,因为我还打算支持 js 后端(我正在生成代码)
  • “这是一个奇怪的案例”似乎足够了。

标签: function lua null


【解决方案1】:

实际上可以在 Lua 函数中区分 nil 值和无值,前提是它们使用 ... 运算符期望可变数量的参数。但是,利用这一点并不容易,也不合理。示例:

function myFunc(...)
  if select('#', ...) == 0 then
    print "Called without argument"
  elseif select('#', ...) == 1 and select(1, ...) == nil then
    print "Called with a nil argument"
  end
end

【讨论】:

  • 有趣的是,#{...} 在这种情况下不起作用,而 select('#', ...) 可以。 select1, nil, 2 的情况下也能正常工作,而 #{...} 返回 1(如文档所述)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
  • 2021-05-01
相关资源
最近更新 更多