【发布时间】:2013-12-04 04:48:01
【问题描述】:
这是一个我已经有一段时间有点恼火的问题,只是一直没有时间去寻找答案。
但我想我至少可以提出这个问题,也许有人可以解释一下。
基本上我使用过的许多语言都使用语法糖来编写(使用来自 C++ 的语法):
int main() {
int a = 2;
a += 3; // a=a+3
}
虽然在 lua 中 += 没有定义,所以我必须写 a=a+3,这又是关于语法糖的。当使用更“有意义”的变量名时,例如:bleed_damage_over_time 或者写起来变得乏味的东西:
bleed_damage_over_time = bleed_damage_over_time + added_bleed_damage_over_time
代替:
bleed_damage_over_time += added_bleed_damage_over_time
所以如果你没有一个好的解决方案,我想知道如何解决这个问题,在这种情况下,我当然有兴趣听到它;而是为什么 lua 没有实现这种语法糖。
【问题讨论】:
-
至少有一个第 3 方补丁实现了这一点:lua-users.org/wiki/LuaPowerPatches(向下滚动到“复合赋值运算符 (5.2)”)
-
为什么 C 不支持类?为什么我不能在 C 中使用
int a = b = c = 0;?为什么 C++ 中没有像int a, float b, char *c = 1, 2.22, "3rd string";这样的分配?无意冒犯,但每种语言都有其自身的局限性和优势。 -
@hjpotter92 完全没有冒犯,你回答了我提出的问题,证明这正是我想要的。 -> +1
-
顺便说一句,如果您正在寻找一些不错的 lua 语法扩展,请查看 moonscript (github.com/leafo/moonscript),它是一个元编程库,可通过以下方式扩展 Lua 语法这样的事情,它在幕后生成 Lua。
-
顺便说一句,像这样的长变量名表明您没有使用适当的数据结构和/或没有将函数范围限定为合理的大小。变量名称应该是描述性的在它们的上下文中。
标签: lua language-design assignment-operator compound-assignment