Lua 中的范围问题

为什么我会得到错误 "attempt to call a nil value"?它没有告诉我为什么或在哪里,这意味着它找不到 Dummy 函数。但是我提前声明过它,所以它应该能看到它。

local Dummy

local function Start()
  print("这一行会被打印")
  ErrorReport(Dummy)
  print("这一行会被打印")
end

local function Dummy()
  print("这一行不会被打印")
end

function ErrorReport(...)
  print("这一行会被打印")
  local ok, error = pcall(...)
  if not ok then print("错误: "..error) end
end

Start()

原文链接 https://stackoverflow.com/questions/71110563

点赞
stackoverflow用户107090
stackoverflow用户107090

local function Dummy 定义了一个名为 Dummy 的第二个本地变量,它屏蔽了第一个变量,而第一个变量的值仍为 nil

只需直接使用 function Dummy () ... end 的形式,这等同于 Dummy = function () ... end

2022-02-14 10:48:34