从Forth中的堆栈中获取第n个元素

时间:2013-09-04 18:14:41

标签: forth

有没有办法通过Forth中的索引访问堆栈元素,而不会弹出它上面的所有元素?

例如,如果我将数字1到1000推入堆栈,我该如何获得第500个元素?

2 个答案:

答案 0 :(得分:9)

500 PICK

...将在堆栈中将元素500级复制到Forth79中的堆栈顶部。

答案 1 :(得分:6)

如果您使用的Forth没有PICK,您可以将其定义为

: PICK   ?DUP IF SWAP >R 1- RECURSE R> SWAP EXIT THEN DUP ;

(当然,也可以使用迭代版本。)