4

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

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

4

2 回答 2

9
500 PICK

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

于 2013-09-04T18:37:24.033 回答
6

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

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

(当然,迭代版本也是可能的。)

于 2013-09-05T11:00:14.150 回答