私はこの関数の動作に本当に混乱しています:
david[x_] := 5; 6; 7
david[]
戻り値
7
しかし、david[3]
戻ります5
なぜこれが起こるのですか?2 番目のケースも 7 を返す必要があると思います。なぜそうではないのですか?
私はこの関数の動作に本当に混乱しています:
david[x_] := 5; 6; 7
david[]
戻り値
7
しかし、david[3]
戻ります5
なぜこれが起こるのですか?2 番目のケースも 7 を返す必要があると思います。なぜそうではないのですか?
驚いたことに、関数は誤動作していません。実際、その動作は正しいです。関数 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 つです。