【发布时间】:2015-10-04 13:15:59
【问题描述】:
如何获取尚未声明的变量?
下面是简单的例子:
a = b
b = 123
这两行我想要的是a 123。但是obv它不起作用。
我知道获得答案a = 123 的简单方法是剪切第一行并将其粘贴到第二行以下。
但我遇到了一些问题。我需要一些像“WillDeclaredVar()”这样的函数,我可以这样使用:
a = WillDeclaredVar(b)
sheepCount = 123
b = sheepCount
print(a)
所以我可以得到答案“123”。
或者有什么内置函数可以让我做类似的事情?
===
我认为 timrau 提供的链接并没有说明我的情况。关键是如何获取“尚未声明的变量”。
===
添加实际代码:
triggerCount = 0 -- Counting number of 'Trigger' function
local Trigger = function (t)
triggerCount = triggerCount + 1
return Trigger (t)
end
-- following Triggers are same as while statement.
-- following Triggers doing: Add 1 MarineCount until get 64000 MarineCount
Trigger { -- Here the Trigger function. Now triggerCount = 1.
players = {P1}
actions = {
SetDeaths(P1, Add, 1, "Terran Marine")
},
flag = {preserved},
}
Portal(LoopStart);
-- function Portal(VariableName) returns VariableName = triggerCount. So LoopStart = 1.
Trigger { -- Now triggerCount = 2.
players = {P1}
actions = {
LinkList(LoopEnd, LoopStart);
-- function LinkList(From, To) changes 'From' Trigger's next pointer to the 'To' Trigger.
-- But now the problem happens. Because 'LoopEnd' is not declared yet.
},
flag = {preserved},
}
Trigger { -- Now triggerCount = 3.
players = {P1}
conditions = {
Deaths(P1, Exactly, 64000, "Terran Marine");
}
actions = {
_LinkList(LoopEnd);
-- Reset LoopEnd's next pointer(= LoopEscape) if MarineCount hits 64000
},
flag = {preserved},
}
Portal(LoopEnd); -- LoopEnd = 3.
更改触发器顺序会破坏触发器逻辑(while 语句)。
我想要的只是轻松编码。说白了,我不需要解决这个问题(get undeclared var)。我可以想象一些避免它的方法。但是如果我使用这些方式,那么编码工作会非常复杂,编码的难度会大大增加。困难让我最近几个月停止了编码。
【问题讨论】:
-
如何获取不存在的变量?你没有。你的例子没有意义。只需将
a =移动到b =行下方。完毕。您的示例绝不解释您为什么需要这个。请给出一个真实世界的示例,该示例不是通过简单地重新排序行来轻松修复且没有副作用的。 -
这闻起来很像XY Problem。你为什么需要这个?你真正的问题是什么?
-
@Mud 在实际代码中,有很多函数。这些功能需要保持正确的顺序并且不要移动。这都是关于 sc1 地图制作的。所以函数(和/或触发器)的顺序非常重要。特别是当我试图管理整个函数的链接列表时。所以是的。试图获取一个不存在的变量通常是不可能的。但我问这个问题的原因是:
-
1.我是 Lua 的大人物,所以我想也许有一些方法可以避免它。 2.有人用python做了8~900行。他说很难让它真正发挥作用。我希望你不会感到语言障碍
标签: lua