代码之家  ›  专栏  ›  技术社区  ›  Mark Green

在Mathematica/Wolfram语言中,是否有任何方法可以检查表达式的求值结果?

  •  0
  • Mark Green  · 技术社区  · 9 年前

    如果我有一个功能:

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

    如果我写下以下内容:

    Foo[oops]; Foo[5]
    

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   agentp    9 年前

    如果您需要数字参数,请执行以下操作:

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

    确保 Clear 在以这种方式定义之前,您的原始定义。

    在您的示例中,您可以交替使用以下三参数形式 If