gpt4 book ai didi

lua - 有 Lua DSL 的条件吗?

转载 作者:行者123 更新时间:2023-12-04 17:47:59 25 4
gpt4 key购买 nike

我正在尝试使用条件语句在 Lua 中构建一个小型 DSL。

x = '0'
function start ()
return function () end
end

function set_x (v)
x = v
return function () end
end

function if_x (v)
if x == v then
print ("x = ", v)
else
print ("x != ", v)
end
return function () end
end

-- DSL here
start {
set_x '10',
if_x '10' { print ('x is 10') },
if_x '20' { print ('x is 20') }
}

输出是:

x =     10
x is 10
x != 20
x is 20

如何以一种优雅的方式实现条件,以便不打印 x is 20?如果不在 set_x 中设置全局变量并在 if_x 中检查它,我无法做到这一点,但这看起来很难看。

有什么线索吗?

谢谢!

最佳答案

例如

x = '10'

function if_x (v)
if x == v then
return function (s)
assert(loadstring(s))()
end
end
return function() end
end

if_x '10' [[print('x is 10')]]
if_x '20' [[print('x is 20')]]

关于lua - 有 Lua DSL 的条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36500735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com