Lua:如何将变量设置为零

Ian*_*oyd 2 lua casting

我有包含数字的变量.虽然Lua允许将变量设置为nil,但变量随后变得有毒 - 破坏其路径中的所有代码.

如果变量包含a nil,我希望它转换为零.

local score;
score = gameResults.finalScore;
Run Code Online (Sandbox Code Playgroud)

我想确保score包含一个数字,所以我尝试:

local score;
score = tonumber(gameResults.finalScore);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.所以我尝试:

local function ToNumberEx(v)
   if (v == nil) then
      return 0
   else
      return tonumber(v)
end

local score;
score = ToNumberEx(gameResults.finalScore);
Run Code Online (Sandbox Code Playgroud)

但这不起作用.所以我尝试:

local function ToNumberEx(v)
   if (v == nil) then
      return 0
   else
      return tonumber(v)
end

local score;
score = ToNumberEx(gameResults.finalScore);

if (score == nil) then
   score = 0
end
Run Code Online (Sandbox Code Playgroud)

这是有效的,但却失去了拥有一个功能的目的.

这个功能出了什么问题?我确信有一个完全合理和合理的解释 - 除了熟悉编程语言的人.

Noa*_*oon 16

score = tonumber(gameResults.finalScore) or 0
Run Code Online (Sandbox Code Playgroud)