gpt4 book ai didi

macros - 在 Mathematica 中打印符号名称和值

转载 作者:行者123 更新时间:2023-12-01 21:38:14 25 4
gpt4 key购买 nike

我想创建一个函数 My`Print[args__]它打印我传递给它的符号的名称及其值。问题是在符号传递到 My`Print 之前,对它们进行评估。所以My`Print永远看不到符号名称。

一个解决方案是包围我传递给 My`Print 的每个参数与 Unevaluated[] ,但这看起来很困惑。有没有一种方法可以定义宏,以便当我输入 My`Print[args__] 时,Mathematica 内核看到 My`Print[Unevaluated /@ args__]

最佳答案

您需要设置属性HoldAll在您的函数上,使用 SetAttribute[my`print]

这是一个可能的实现:

Clear[my`print]
SetAttributes[my`print, HoldAll]
my`print[args__] :=
Scan[
Function[x, Print[Unevaluated[x], " = ", x], {HoldAll}],
Hold[args]
]

我使用小写名称以避免与包中的内置函数或函数发生冲突。

编辑:

为了明确起见:我这里有两个函数。将打印单个符号的值,并在内部实现为函数。如果足够的话,您可以单独使用它。另一个是实际的 my`print 函数。请注意,两者都需要具有 HoldAll 属性。

关于macros - 在 Mathematica 中打印符号名称和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7985052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com