2015-07-20 46 views
0

如果我有一個函數:在Mathematica/Wolfram語言中,是否有任何方法來檢查表達式是否被評估?

Foo[x_] := If[x==2, [email protected]"Two", [email protected]"No"] 

然後,如果我寫了以下內容:

Foo[oops]; Foo[5] 

哪裏oops是一個全局變量拼錯名字,結果是調用Foo[oops]剛落通過而不是給出錯誤。我知道這是爲什麼 - 因爲它創建了一個象徵性的表達,因爲它沒有被評估,所以不會做任何事情 - 但是對於程序編程來說這非常尷尬。有沒有什麼方法可以指定一個函數或表達式必須完全評估,並給出一個錯誤或返回一個適當的值,如果它不是?

回答

1

如果你想要求一個數字參數做這樣的事情:

foo[x_?NumericQ] := whatever 
foo[x_] := Print["Error"] 

務必確定這種方式前Clear您的原始定義。

在你的例子中,你可以交替使用三種參數形式If

相關問題