【问题标题】:Declare a dynamic constant in Maxima在 Maxima 中声明一个动态常数
【发布时间】:2020-02-25 15:40:54
【问题描述】:

我需要声明一个变量为常量,这个变量是在程序运行的时候生成的,我试过这样:

foo(var) := declare(''var, constant)$

foo(x)$

facts();

但这不起作用,我得到:

[kind(var, constant)]

每次。

改为:

[kind(x, constant)]

当我编写没有函数的代码时,一切正常:

var: x$

declare(''var, constant)$

facts();

我明白了:

[kind(x, constant)]

有谁知道如何通过函数动态地做到这一点

【问题讨论】:

  • 函数:eval_string (str) 有帮助。

标签: math constants maxima declare


【解决方案1】:

确保对参数进行评估的传统方法,即使对于以其他方式引用其参数的函数,也是 apply 将函数传递给参数。例如:

apply (declare, [var, 'constant]);

或者,在函数中:

foo(var) := apply (declare, [var, 'constant]);

apply 评估它的参数,所以参数在函数看到它们时被评估。

quote-quote ''var 在函数中没有预期的效果,因为quote-quote 仅在解析表达式时应用。因此,以后对var 的任何分配都无效。

我建议不要eval_string。几乎总有比字符串处理更好的方法。在这种情况下,更好的方法是apply

【讨论】:

    猜你喜欢
    • 2012-01-11
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    相关资源
    最近更新 更多