在Java中,可以执行以下操作:
int var = 5;
var += 2;
var -= 2;
var *= 2;
var /= 2;
在福斯可以这样做吗?
variable var
3 var !
1 var +! //Increment
有可能在福斯做其他的手术吗?如果没有,有什么提示吗?
发布于 2018-03-01 08:19:59
除了使用-2 var +!
递减之外,这些其他操作都不是内置的。
你可以这样做:
: -! ( x addr -- ) swap negate swap +! ;
: *! ( x addr -- ) tuck @ * swap ! ;
: /! ( n addr -- ) tuck @ / swap ! ;
发布于 2019-01-18 16:20:00
这在福斯是有一个根本的原因不能做到的。让我们
int,var1;
以及Jave代码:
‘var1 =var1;
除了Forth想要用空格分隔的符号之外,Forth想要一个单词总是做同样的事情,独立于上下文。在Java代码中,var是左边的,这意味着它必须表示一个地址,其中存储了一些东西。在右边,var1也表示一个地址。但是Java神奇地获取了地址的内容!第四,我们不做魔法交易。我们不能让var现在做这个,然后再做那个。你给出的例子是可行的,只要你远离魔法部分,就像其他答案所解释的那样。
当然,福斯也会施魔法。您可以创建一个=-word,检查下面的单词var是否为int类型,然后获取它。但这不是Forth,那是Java的第四个实现。
https://stackoverflow.com/questions/49044918
复制相似问题