尝试索引全局'self'(零值)_

 le__citron 发布于 2022-12-04 15:09

我运行了这段代码,它给了我一个错误尝试索引全局'self'(一个零值)

hook.Add("Think", "Cooking", function()
    local Position = self:GetPos() + self:GetAngles():Up()*20
    local rawFood = ents.FindByName("my_raw_food")
    for k, v in pairs(rawFood) do
        if(Position:Distance(v:GetPos()) <= 25) then 
        v:Remove()
        timer.Create(self:EntIndex() .. "my_food", 5, 1, function() self:createFood() end)
        end
    end
end )

CalvinE.. 6

如果没有看到更多的代码,特别是代码的范围,很难说.

但听起来"范围内"并不存在"自我".它应该作为参数提供给函数:

hook.Add("Think", "Cooking", function(self)
  print(self)    -- uses the 'self' parameter
end)

或者它应该在声明函数的范围内可用,并且它将成为闭包的一部分:

function MyClass.addHook(self)    -- same as MyClass:addHook()
  hook.Add("Think", "Cooking", function()
    print(self)    -- uses the 'self' in scope (la MyClass instace)
  end)

虽然,self当然可以nil在范围内声明.呼叫MyClassInstance.addHook()代替MyClassInstance:addHook()是最常见的.

1 个回答
  • 如果没有看到更多的代码,特别是代码的范围,很难说.

    但听起来"范围内"并不存在"自我".它应该作为参数提供给函数:

    hook.Add("Think", "Cooking", function(self)
      print(self)    -- uses the 'self' parameter
    end)
    

    或者它应该在声明函数的范围内可用,并且它将成为闭包的一部分:

    function MyClass.addHook(self)    -- same as MyClass:addHook()
      hook.Add("Think", "Cooking", function()
        print(self)    -- uses the 'self' in scope (la MyClass instace)
      end)
    

    虽然,self当然可以nil在范围内声明.呼叫MyClassInstance.addHook()代替MyClassInstance:addHook()是最常见的.

    2022-12-11 02:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有