在Mathematica / Wolfram语言中,有没有办法检查表达式是否被评估?

时间:2015-07-20 13:38:48

标签: wolfram-mathematica

如果我有一个功能:

Foo[x_] := If[x==2, Print@"Two", Print@"No"]

然后,如果我写下以下内容:

Foo[oops]; Foo[5]

其中oops是全局变量的拼写错误的名称,结果是对Foo[oops]的调用只是通过而不是给出错误。我知道为什么会这样 - 因为它创建了一个符号表达式,因为它没有被评估,所以没有做任何事情 - 但它对于程序编程来说非常尴尬。是否有任何方法可以指定必须完全评估函数或表达式并给出错误或返回适当的值(如果不是?)

1 个答案:

答案 0 :(得分:1)

如果你想要一个数字参数,可以这样做:

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

在定义这种方式之前,请务必Clear原始定义。

在您的示例中,您可以使用If

的三个参数形式