Lua:有没有一种方法可以连接“nil”值?

7

I have the following function in Lua:

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

这个函数可以检查数值k是否有值。我用它来判断是否显示数值为零的内容。但是我的问题是:我想把iffunc()的字符串连接起来,但由于一些值为0,因此返回一个尝试连接空值的错误。例如:

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

如果表格中的任何值为0,它将返回错误。我可以在if函数本身中轻松地放置'return 0';但是,我也不想得到一串000。那么,我该如何处理才能避免出现这种错误?最终,我会对levellbon变量进行if函数操作,以查看它是否被填充或未填充,但我已经解决了这部分问题。我现在只需要克服这个小障碍。谢谢!

3
k为0时,你是否可以只返回一个空字符串("")? - Some programmer dude
1
糟糕!我简直不敢相信它是如此简单。我把它归咎于编程的时间和缺乏睡眠。谢谢!现在只需要稍微修改一下函数就可以了。 - Josh
2
以后你需要知道的是,你可以这样做:something and A or B。如果 something 为真,则会推送值 A,否则将推送值 B。例如:k ~= 0 and str..k..(str1 or "") or "" - Deco
@JoachimPileborg,你一定要把它作为一个正式的答案添加进去。 - ponzao
选定的答案很好,但是下面的代码对我也适用:print("this is a string " .. tostring(nilObject))上面的代码会打印以下输出:this is a string nil - buch11
2个回答

25

我会这样做:

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

只是一句话,如果你确实有理由连接一个空值,你可以这样做:'hi' .. string.char(0x00) .. 'there' - Tw Bert

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接