在 Mathematica/Wolfram 语言中,有什么方法可以检查表达式是否已求值?
In Mathematica/Wolfram language, is there any way to check that an expression evaluated?
如果我有一个函数:
Foo[x_] := If[x==2, Print@"Two", Print@"No"]
那如果我这样写:
Foo[oops]; Foo[5]
其中 oops
是全局变量的拼写错误的名称,结果是对 Foo[oops]
的调用只是失败而不是给出错误。我知道这是为什么 - 因为它创建了一个符号表达式,因为它没有被评估,所以不做任何事情 - 但它对于过程编程来说非常尴尬。有什么方法可以指定函数或表达式必须完全求值并给出错误或 return 一个适当的值(如果不是)?
如果你想要求一个数字参数做这样的事情:
foo[x_?NumericQ] := whatever
foo[x_] := Print["Error"]
在这样定义之前,请务必Clear
您的原始定义。
在您的示例中,您可以交替使用 If
的三参数形式
如果我有一个函数:
Foo[x_] := If[x==2, Print@"Two", Print@"No"]
那如果我这样写:
Foo[oops]; Foo[5]
其中 oops
是全局变量的拼写错误的名称,结果是对 Foo[oops]
的调用只是失败而不是给出错误。我知道这是为什么 - 因为它创建了一个符号表达式,因为它没有被评估,所以不做任何事情 - 但它对于过程编程来说非常尴尬。有什么方法可以指定函数或表达式必须完全求值并给出错误或 return 一个适当的值(如果不是)?
如果你想要求一个数字参数做这样的事情:
foo[x_?NumericQ] := whatever
foo[x_] := Print["Error"]
在这样定义之前,请务必Clear
您的原始定义。
在您的示例中,您可以交替使用 If