有没有办法通过Forth中的索引访问堆栈元素,而不会弹出它上面的所有元素?
例如,如果我将数字1到1000推入堆栈,我该如何获得第500个元素?
答案 0 :(得分:9)
500 PICK
...将在堆栈中将元素500级复制到Forth79中的堆栈顶部。
答案 1 :(得分:6)
如果您使用的Forth没有PICK,您可以将其定义为
: PICK ?DUP IF SWAP >R 1- RECURSE R> SWAP EXIT THEN DUP ;
(当然,也可以使用迭代版本。)