福斯中的单词重新定义



在Forth中,在重新定义单词的情况下,使用重新定义的单词的另一个单词的预期行为是什么?例如,如果x调用y

: Y ." Old Y " CR ;
: X 10 0 DO Y LOOP ;
 ... 
: Y ." New Y " ;

那么在重新定义Y之后,XOld YNew Y的输出应该是什么?

简短

的回答:X将输出Old Y,另请参阅在线测试中的示例。在第二次定义Y时,X已经编译。

在Forth中,重新定义只是阴影:当一个新定义的名称遮蔽同一单词列表中的另一个名称时,阴影定义变得无法通过该名称访问(无法找到)。

此外,Forth 使用增量编译和静态名称解析(在编译时执行)。因此,新定义不会影响任何以前的定义(以及已编译的代码)。

相关内容

  • 没有找到相关文章

最新更新