我认为 Maxima 中的块的目的是保护全局变量不被意外重新分配。但是,我对块的不同部分的角色/规则并不完全清楚。
例如,如果定义函数:
function():=
block(
[
a:1,
b:2,
c:a,
d:b
],
[c,d]);
);
执行此函数会产生function(); >> [ a, b ]
. 最初,我期望[ 1 , 2 ]
; 但是,在查阅文档后,我看到它说:
请注意,块变量中的赋值是并行完成的。
我的意思是,在上面,c:a
并且d:b
被分配给尚未声明的变量a
和b
.
因此,如果我想在一个块中拥有依赖于其他变量的变量,那么正确的方法是:
function():= block([ a:1, b:2 ], block([ c:a, d:b], [ c, d]) );
它似乎给出了正确的结果,但这对我来说似乎有点迂回,所以我不禁想知道是否有更直接的方法?我也不清楚何时在[ ]
节中声明变量很重要(块的各个部分是否有名称?)。任何见解将不胜感激。