我需要一个函数,它将一个符号的名称作为一个字符串并返回是否已经定义了该符号。函数ValueQ
已关闭,但函数名称返回False。此外,它需要符号而不是字符串。Mathematica中“定义”的等效
例子:
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和子值。
哦,真好!尽管名称[“7”]失败。另外,如果你提到一个符号x,那么Names [“x”]将表明它已被定义,即使它实际上没有定义。 – dreeves 2009-09-18 19:53:44
你说得对。我不确定是否有任何方法可以知道某个符号是否有明确的定义,或只有提及的符号。定义[foo]告诉你这一点,但我认为不能自动使用。 – Joren 2009-09-18 20:02:37