在Lua的块外使用局部变量?

死锁

if在Lua有一个巢我在第二if层中有一个要在第一层中使用的变量

变量是npcSpecimen

if conditions then
  local npcType = util.pickRandom(self.npcTypes)
  local npcSpecimen = "" 
  
  if npcType == "spacebandit" then
    local npcSpecimen = util.pickRandom(self.npcSpecies)
  else
    local npcSpecimen = util.pickRandom(self.npcSpeciesMutant)
  end

  local npcId = space.spawnNpc(spawnPosition, npcSpecimen, npcType)
end

如果以这种方式编写,npcSpecimen则将保持为空,因为在内部设置的变量if npcType仅保留在该块内。因此,为了缓解这种情况,我可以改用全局变量:

  if npcType == "spacebandit" then
    npcSpecimen = util.pickRandom(self.npcSpecies)
  else
    npcSpecimen = util.pickRandom(self.npcSpeciesMutant)
  end

但是,根据文档,使用全局变量不是最佳实践,而且速度较慢。

那么解决这个问题的最佳方法npcSpecimennpcId什么呢?

DarkWiiPlayer

从技术上讲,答案是“否”,您不能在范围之外使用局部变量,这就是局部变量的重点。但是,您可以通过在使用变量的块外声明变量来更改变量的范围:

local foo
if io.read() == "hello" then -- Just a dumb example condition :)
   foo = "hello" -- This is not a global, as it was declared local above
end
print(foo)

但是,请注意以下内容不起作用,或者更确切地说,与上面的功能不同:

local foo
if io.read()=="hello" then
   local foo = "hello" -- This is another local
end
print(foo) -- This will *always* print nil

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在函数之外使用局部变量

来自分类Dev

在函数之外使用局部变量

来自分类Dev

在javascript中的函数之外使用局部变量

来自分类Dev

可以在方法之外使用局部变量吗?

来自分类Dev

块局部变量的语法

来自分类Dev

在finally块上使用未分配的局部变量

来自分类Dev

在finally块上使用未分配的局部变量

来自分类Dev

在声明范围之外使用局部变量;为什么这样做?

来自分类Dev

局部变量可访问的外部块

来自分类Dev

包含局部变量的Lua插件

来自分类Dev

Lua,表中的局部变量

来自分类Dev

Pycharm在“ if”块中警告“未使用局部变量<variable>值”,但实际上已使用

来自分类Dev

在块中使用局部变量名“ self”是否正确?

来自分类Dev

在 Oracle 过程中,如何定义局部变量并在 DECLARE 块之后使用它?

来自分类Dev

Lua函数选择局部变量而不是全局变量

来自分类Dev

Lua函数选择局部变量而不是全局变量

来自分类Dev

使用eval命令在Lua脚本中进行局部变量分配

来自分类Dev

Lua - 如何在函数中使用局部变量(图像 URL)来打印图像 (loadRemoteImage)?

来自分类Dev

在脚本块的父作用域中更改局部变量

来自分类Dev

块保证局部变量将在Swift中被修改吗?

来自分类Dev

C#Func:在块中访问局部变量

来自分类Dev

使用PowerMockito访问方法的局部变量?

来自分类Dev

使用未分配的局部变量LinqToLdap

来自分类Dev

使用局部变量增强精神

来自分类Dev

在actionlistener中使用非局部变量

来自分类Dev

对XML节点使用SQL局部变量

来自分类Dev

使用未分配的局部变量“ strCity”

来自分类Dev

使用未分配的局部变量“ SHELLEXECUTEINFO”

来自分类Dev

声明之前无法使用局部变量

Related 相关文章

热门标签

归档