"字到底有什么作用?-6ren"> "字到底有什么作用?-我胡思乱想,想弄明白,就写了个简单的词来测试一下: : test ." compile time" DOES> ." runtime" ; 问题是,这个词的行为方式根本不一致。它的输出似乎取决于许多因-6ren">
gpt4 book ai didi

forth - "DOES>"字到底有什么作用?

转载 作者:行者123 更新时间:2023-12-05 09:36:49 24 4
gpt4 key购买 nike

我胡思乱想,想弄明白,就写了个简单的词来测试一下:

: test ." compile time" DOES> ." runtime" ;

问题是,这个词的行为方式根本不一致。它的输出似乎取决于许多因素,例如:

  • 这是要解释的第一行吗?
  • 后面还定义了其他词吗?

此外,有时它根本不打印任何内容。

(使用 Gforth)

最佳答案

这是您的代码:

: test ." compile time" DOES> ." runtime" ;

输入后,我可以使用你的词而不你遇到的模棱两可的行为:

CREATE def 12345 , test \ prints "compile time"

它打印编译时间,因为这是您在DOES> 之前编译到test 中的行为。注意:这实际上并没有在编译时运行。

DOES> 结束了单词的定义,但是改变了它 test 也修改了最后定义的单词,这样它就把它的数据域地址放到了栈上,并且然后运行在 DOES> 之后发现的行为。

使用我创建的词,它具有您定义的实例化行为,遵循推送地址的隐式行为:

def @ . \ prints runtime 12345

Forth 2012 注意:根据 Forth 2012 中 DOES> 的定义,如果最后一个词没有用 CREATE 定义,这将导致不明确的行为。但是,Gforth 允许修改任何单词定义。

我希望这个例子有助于解释为什么通常在使用 DOES> 的定义中使用 CREATE,但它肯定不是必需的。

关于forth - "DOES>"字到底有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64919966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com