为什么Mathematica函数会以这种方式运行?

时间:2012-10-09 03:26:07

标签: functional-programming wolfram-mathematica

我真的很担心这个功能的行为:

david[x_] := 5; 6; 7

david[] 

返回

7

david[3]会返回5

为什么会这样?我认为第二种情况也应该归还7;为什么不呢?

1 个答案:

答案 0 :(得分:2)

令人惊讶的是,这个功能并没有行为不端。事实上,它的行为是正确的。在定义函数david之后,用一个分号终止它,然后是一个常量(6),其值被分号抑制,然后是一个未被抑制的常量。因此,当您尝试评估单元格时,每次运行时,函数david的值都设置为5:

david[x_] := 5; (* This is where the 5 comes from when you try to evaluate the cell*)

你得到7的事实是因为你有一个未被抑制的常数。

与此相比:

david[x_] := 5; 6; 7; 9; 12; (* 6, 7, 9 and 12 will never show up, since they are suppressed *)

对战:

david[x_] := 5; 6; 7; 9; 12; 17 (* 17 will **always** show up, since it is unsuppressed *)

您所观察到的是Mathematica语言的一个怪癖。