Tru-6ren">
gpt4 book ai didi

wolfram-mathematica - 相当于 Mathematica 中的 "defined"

转载 作者:行者123 更新时间:2023-12-04 08:13:18 25 4
gpt4 key购买 nike

我需要一个将符号名称作为字符串并返回该符号是否已定义的函数。函数 ValueQ 很接近,但它为函数名称返回 False。此外,它需要符号而不是字符串。

例子:

defined["N"] --> True (predefined function N)
defined["x"] --> False
x = 7;
defined["x"] --> True (x is now defined)
defined["7"] --> True (7 is a number)
f[x_] := 2x
defined["f"] --> True (f has DownValues)
g[x_][y_] := x+y
defined["g"] --> True (g has SubValues)

PS:感谢 Pillsy 指出需要同时检查 DownValues 和 SubValues。

最佳答案

我把这个拼凑起来,这似乎可行:

defined[s_] := ToExpression["ValueQ[" <> s <> "]"] || 
Head@ToExpression[s] =!= Symbol ||
ToExpression["Attributes[" <> s <> "]"] =!= {} ||
ToExpression["DownValues[" <> s <> "]"] =!= {} ||
ToExpression["SubValues[" <> s <> "]"] =!= {}

希望有更漂亮的解决方案。

PS:感谢 Pillsy 指出需要同时检查 DownValues 和 SubValues。

关于wolfram-mathematica - 相当于 Mathematica 中的 "defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446477/

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