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



有没有一种方法可以通过Forth中的索引访问堆栈中的元素,而不弹出其上方的所有元素?

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

500 PICK

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

更相关的是:PICK是ISO93 Forth的核心扩展词集,是当前标准的基础。本标准中PICK的定义基于0,例如"0 PICK"等同于"DUP"。参见第6.2.2030节

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

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

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

相关内容

  • 没有找到相关文章