我的用于Lua的DSL会工作吗? (这似乎太简单了)
发布时间:2020-12-15 00:16:41 所属栏目:大数据 来源:网络整理
导读:我真的很喜欢 Lua作为一种编程语言,但令人难以置信的是,我不得不经常为我所有的局部变量键入“local”. 它只是让我的代码看起来更混乱. 所以我想知道,我可以在Lua之上创建一个域特定语言(DSL)来简单地使用以下变量命名约定. 如果变量名称在所有大写字母中,那
我真的很喜欢
Lua作为一种编程语言,但令人难以置信的是,我不得不经常为我所有的局部变量键入“local”.
它只是让我的代码看起来更混乱. 所以我想知道,我可以在Lua之上创建一个域特定语言(DSL)来简单地使用以下变量命名约定. >如果变量名称在所有大写字母中,那么它是一个全局变量 问题:这是否有效 – 是或否? 换一种说法: -- In Lua 5.2 isGlobalinLua = "is global in default Lua" GLOBALVAR = "is global var in default Lua" local localvar = "is local var in default Lua" -- In my DSL Lua language isLocalinDSLLua = "is local in DSL Lua" -- translates to: local isLocalinDSLLua = ... GLOBALVAR = "is global DSL Lua" localvar = "is local var in DSL Lua" -- translates to: local localvar = ... 那么现在,默认Lua中的以下代码: myglobal = 10 local a = 1 if a > 1 then local b = 2 print b else local c = 3 print c + myglobal end 用我的DSL Lua: MYGLOBAL = 10 a = 1 if a > 1 then b = 2 print b else c = 3 print c + MYGLOBAL end 更新: 本地功能怎么样? 以下代码如何工作? myfunc = function (...) -- local myfunc = function (...) 我不确定我是否希望在所有上限中实现所有全局功能. 也许我只是忽略功能并需要“本地”标识符……想法? 解决方法
默认情况下,Moonscript已将所有变量设置为本地,您只需使用export关键字来声明全局变量.它是一种非常好的下一代,类似coffeescript的语言,它编译成Lua.我在以前使用Lua的地方使用它.
foo = 'bar' -- local square (x) -> x*x -- local -- globals export square export MY_GLOBAL = 12 export class Foo new: (bar) => @bar = bar -- self.bar = bar get_bar: => @bar (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |