1

私はこの関数の動作に本当に混乱しています:

david[x_] := 5; 6; 7

david[] 

戻り値

7

しかし、david[3]戻ります5

なぜこれが起こるのですか?2 番目のケースも 7 を返す必要があると思います。なぜそうではないのですか?

4

1 に答える 1

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 言語の癖の 1 つです。

于 2012-10-09T03:42:56.840 に答える