我真的很担心这个功能的行为:
david[x_] := 5; 6; 7
david[]
返回
7
但david[3]
会返回5
为什么会这样?我认为第二种情况也应该归还7;为什么不呢?
答案 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语言的一个怪癖。