【问题标题】:Lua: Is there a way to concatenate "nil" values?Lua:有没有办法连接“nil”值?
【发布时间】:2011-12-24 09:00:15
【问题描述】:

我在 Lua 中有以下功能:

function iffunc(k,str,str1)
  if k ~= 0 then
    return str .. k .. (str1 or "")
  end
end

这个函数允许我检查值 k 是否被填充。我实际上是用它来确定是否要显示零值的东西。我的问题是:我正在尝试连接 iffunc() 的字符串,但由于某些值为 0,因此它返回尝试连接 nil 值的错误。例如:

levellbon = iffunc(levellrep["BonusStr"],"@wStr@r{@x111","@r}") .. iffunc(levellrep["BonusInt"],"@wInt@r{@x111","@r}") .. iffunc(levellrep["BonusWis"],"@wWis@r{@x111","@r}")

如果任何一个表值为 0,它将返回错误。我可以很容易地将'return 0'放在 iffunc 本身中;但是,我也不想要一串 000。那么,无论哪个值为零,我都不会得到那个错误,我该如何工作呢?最终,我将对 levellbon 变量执行 iffunc 以查看它是否已填充,但我已经弄清楚了那部分。我现在只需要克服这个小障碍。谢谢!

【问题讨论】:

  • k 为0 时,您不能只返回一个空字符串("") 吗?
  • 天啊!我不敢相信事情就这么简单。我将其归咎于编码时间和睡眠不足。谢谢!现在只需要稍微修改一下函数。
  • 只是为了让您知道将来,您可以这样做:something and A or B。如果something 的计算结果为true,它将推送值A,否则将推送值B。示例:k ~= 0 and str..k..(str1 or "") or ""
  • @JoachimPileborg 您绝对应该将其添加为正确答案。
  • 所选答案工作正常,但这对我来说似乎也工作正常: print("this is a string" .. tostring(nilObject)) 上面的行打印输出:这是一个字符串 nil

标签: lua concatenation null


【解决方案1】:

我会这样做:

function iffunc(k,str,str1)
  if k == 0 then return "" end
  return str .. k .. (str1 or "")
end

【讨论】:

  • 只是备注,如果你确实有理由连接一个 nil 值,你可以这样做:'hi' .. string.char(0x00) .. 'there'
【解决方案2】:

您应该在函数中添加一个else 语句,在其中返回一个空字符串 ("")。

【讨论】:

    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 2021-08-20
    • 2020-04-28
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多