在Forth中定义单词时选择参数顺序的一般规则(经验法则)是什么?
例如,在控制一些伺服系统的情况下,让我们定义SERVO!哪个伺服通道的位置.
继!的方式,它应该是: SERVO! ( val #ch -- ),但另一方面不让它看起来更天然是: SERVO! ( #ch val -- )?
是否有类似于inputBasic或scanf("%d")C in Forth的东西?
可能会是这样的:
200 buffer: buf
: input ( -- n ) buf 200 accept
some-magic-filter
buf swap evaluate ;
Run Code Online (Sandbox Code Playgroud)
上面代码中的问题是如何定义一个只传递数字的过滤器,而不是任何单词,定义等?
在Forth中,在重新定义单词的情况下,使用重新定义的单词的另一个单词的预期行为是什么?例如,如果x来电y:
: Y ." Old Y " CR ;
: X 10 0 DO Y LOOP ;
\ ...
: Y ." New Y " ;
Run Code Online (Sandbox Code Playgroud)
那么在重新定义之后Y,应该输出什么X,Old Y或者New Y?