第四表达式算术运算

Forth expression arithmetic operations

Java 中可以执行以下操作:

int var = 5;
var += 2;
var -= 2;
var *= 2;
var /= 2;

在 Forth 中可以这样做吗?

variable var
3 var !
1 var +! //Increment

是否可以像在 Forth 中那样进行其他操作?如果没有,有什么提示吗?

除了用-2 var +!自减外,其他操作都没有内置。

你可以这样做:

: -! ( x addr -- )   swap negate swap +! ;
: *! ( x addr -- )   tuck @ * swap ! ;
: /! ( n addr -- )   tuck @ / swap ! ;

Forth 无法做到这一点是有根本原因的。 让我们

int var, var1 ;

和 Jave 代码:

'var = var1 ;

除了 Forth 希望标记用空格分隔之外,Forth 希望单词总是做同样的事情,独立于上下文。 在 Java 代码中,var 是左侧,这意味着它必须代表一个地址,其中存储了一些东西。 右边的var1也代表一个地址。但是 Java 神奇地获取了地址的内容!在 Forth 中,我们不处理魔术。我们不能让 var 现在做这个然后做那个。 只要您远离魔术部分,您提供的示例是可行的,如其他答案中所述。

[当然,Forth 也可以变魔术。您可以创建一个 =-word 来检查后面的单词 var 是否为 int 类型,然后获取它。但这不是 Forth,那是 Java.]

的 Forth 实现