抱歉(可能太多)基本问题。 我有支持
b:2;
c:3;
a:b+c;
有没有办法显示a
的定义,即显示b+c
而不是5
?
答案 0 :(得分:3)
正如您所说的那样,不,因为在作业完成后,a
与b + c
没有任何关联(仅限于已分配的数值)。
但是,您可以重新解决问题,以便恢复作业的右侧。例如:
kill (a, b, c); /* remove any existing values */
b : 2;
c : 3;
a : '(b + c);
=> c + b
''a;
=> 5
a;
=> c + b
kill (a, b, c);
a : b + c;
=> c + b
b : 2;
c : 3;
''a;
=> 5
a;
=> c + b
在这两种情况下,b + c
在分配给a
时未被数字值替代,无论是通过阻止评估(第一个示例)还是通过在b
和{{之前分配1}}给出数值。最后,这是另一种避免将数值赋给c
和b
的方法:
c
我认为最后一个使用kill (a, b, c);
a : b + c;
=> c + b
subst ([b = 2, c = 3], a);
=> 5
a;
=> c + b
的方法更可取,因为其他方法使用引用引用运算符subst
,这有点过于微妙,因此具有可能令人惊讶的效果