我对OpenSCAD很陌生,但其中大部分已经失败了。但是,我不确定如何进行类似堆栈的操作。只要我可以推送和弹出数字,使用什么数据结构并不重要。这可能吗?
答案 0 :(得分:1)
我在实施string processing library时广泛使用堆栈。
诀窍是使用size = 2的嵌套右关联列表,例如[“foo”,[“bar”,[]]]。
如果你想把东西推到堆栈中:
function push(stack, item) = [item, stack];
如果你想弹出堆栈:
function pop(stack) = stack[1];
如果你想查看或检索弹出的值:
function peek(stack) = stack[0];
您还可以使用递归实现map / reduce函数:
function map(stack) =
push(
map(pop(stack)),
f(peek(stack))
);
function reduce(stack) =
f(peek(stack))?
push(
reduce(pop(stack)),
f(peek(stack))
)
:
reduce(pop(stack))
;
当然,现在版本2015.03已经出来你可能会考虑使用列表理解,假设这是你真正需要的。