在 Java 中,可以执行以下操作:
int var = 5;
var += 2;
var -= 2;
var *= 2;
var /= 2;
是否可以在Forth中执行此操作?
variable var
3 var !
1 var +! //Increment
是否有可能在Forth中执行其他操作?如果没有,任何关于如何提示?
答案 0 :(得分:3)
除了使用-2 var +!
递减之外,其他操作都没有内置。
你可以这样做:
: -! ( x addr -- ) swap negate swap +! ;
: *! ( x addr -- ) tuck @ * swap ! ;
: /! ( n addr -- ) tuck @ / swap ! ;
答案 1 :(得分:0)
有一个根本原因无法在Forth中完成。 我们有
int var,var1;
和Jave代码:
'var = var1;
除了Forth希望用空格分隔标记的问题之外,Forth希望单词始终执行相同的操作,而与上下文无关。 在Java代码中, var 是左侧,这意味着它必须表示一个存储内容的地址。 在右侧, var1 也代表一个地址。但是Java神奇地获取了地址的内容!在Forth中,我们不处理魔术。我们不能认为 var 现在正在执行然后执行。 只要您不了解魔术部分,您给出的示例都是可行的,如其他答案所述。
[当然,Forth也可以做魔术。您可以创建一个= -word,以检查后面的单词var是否为int类型,然后获取它。但这不是Forth,而是Java的Forth实现。]