我需要一個函數,它將一個符號的名稱作爲一個字符串並返回是否已經定義了該符號。函數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