我的Lua DSL设计得如此简单,它真的能在实际应用中稳定工作吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计489个文字,预计阅读时间需要2分钟。
我真的很喜欢Lua作为一种编程语言,但让人难以置信的是,我不得不经常为我的局部变量键入local。这仅仅让我的代码看起来更混乱。所以我想知道,我能否在Lua中创建一个特定域?
我真的很喜欢 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 (...)
我不确定我是否希望在所有上限中实现所有全局功能.
也许我只是忽略功能并需要“本地”标识符……想法?
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
本文共计489个文字,预计阅读时间需要2分钟。
我真的很喜欢Lua作为一种编程语言,但让人难以置信的是,我不得不经常为我的局部变量键入local。这仅仅让我的代码看起来更混乱。所以我想知道,我能否在Lua中创建一个特定域?
我真的很喜欢 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 (...)
我不确定我是否希望在所有上限中实现所有全局功能.
也许我只是忽略功能并需要“本地”标识符……想法?
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

