【发布时间】:2013-09-04 18:14:41
【问题描述】:
有没有办法通过 Forth 中的索引访问堆栈中的元素,而不弹出它上面的所有元素?
例如,如果我将数字 1 到 1000 压入堆栈,我如何获得第 500 个元素?
【问题讨论】:
标签: forth
有没有办法通过 Forth 中的索引访问堆栈中的元素,而不弹出它上面的所有元素?
例如,如果我将数字 1 到 1000 压入堆栈,我如何获得第 500 个元素?
【问题讨论】:
标签: forth
500 PICK
...将元素从堆栈向下复制 500 级到 Forth79 中的堆栈顶部。
【讨论】:
0 pick 会将最近添加的元素复制到堆栈中?
2 PICK 与 OVER 相同,1 PICK 与 DUP 相同。我认为0 PICK 无效。
2 PICK is quivalent to OVER.
如果你使用的 Forth 没有 PICK,你可以定义为
: PICK ?DUP IF SWAP >R 1- RECURSE R> SWAP EXIT THEN DUP ;
(当然,迭代版本也是可能的。)
【讨论】: