gpt4 book ai didi

lua - 为什么我得到 "attempt to call global ' require'(零值)”?

转载 作者:行者123 更新时间:2023-12-03 05:18:19 26 4
gpt4 key购买 nike

我有3个lua文件,Init.lua,FreeCamera.lua和Camera.lua,

init.lua 调用需要“Core.Camera.FreeCamera”

免费相机:

module(...)
require "Core.Camera.Camera"

local M = {}
FreeCamera = M

M = Class( Camera )
function M:__constructor(x,y,z)
self.Active = false
self.x = x
self.y = y
self.z = z
end

module(...)

local M = {}
Camera = M

M = Class()

function M:__constructor(x,y,z)
self.Active = false
self.x = x
self.y = y
self.z = z
end

FreeCamera “继承”了 Camera 的类型。我试图在我的初始化文件中要求 FreeCamera,我得到了这个:

..\Content\Modules\Core\Camera\FreeCamera.lua:12:尝试调用全局“require”(零值)。知道为什么吗?我使用 require 的方式正确吗?显然它正在进入 FreeCamera.lua,这很棒,但它卡在了下一个 require 上。

最佳答案

要将标识符“导入”到模块中,您可以编写如下代码:

local require = require
local Class = Class
local io, table, string
= io, table, string
local type, pairs, ipairs, assert
= type, pairs, ipairs, assert

module(...)

local Camera = require 'Core.Camera.Camera'

等等。

module(...) 命令从全局变量命名空间中删除(几乎)所有内容,它创建属于新模块的新全局命名空间。除了 _M_G 等几个特殊标识符之外,新命名空间是空的。但本地标识符仍然可见。

local 声明使模块的依赖关系清晰,并且它们还可以传达您的意图。作为奖励,它们使对命名标识符的访问更加高效。所以这是非常好的Lua风格。

关于lua - 为什么我得到 "attempt to call global ' require'(零值)”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1725995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com