OCamlをつつく11-条件判断。関数でも判定は必要!
let x = 10;;
if x > 10 then print_string "true" else print_string "false";;
let x = 20;;
if x > 10 then print_string "true" else print_string "false";;
このプログラムを実行してみて。if文の動きがわかりやすいと思うピヨ。if 条件で結果がtrue(真)ならば thenブロックのプログラムが実行されて、 結果がfalse(偽)ならば elseブロックのプログラムが実行されるんだ。
これでif文はほとんどマスターしたのと同じだけど、面白くないから意地悪プログラムを書いてみたピヨ。こんなこと思いつくなんて、ドリィちゃんと似てきたのかな?
let x = 20
if x > 10 then print_string "true";;
let x = 1;;
if x > 10 then print_string "true";;
このようにelseは省略できるんだ。 だけど、上記サンプルの2つ目のif文は動作がおかしくなるよ。 何故かと言うと、elseブロックを実行したいのにそれがないからなんだ。 つまり、絶対にtrueと分かっている時のみelseを省略できるんだ。でもそんな状況は滅多にないからelseブロックは必ず書こう。
ところで、今までのサンプルプログラムはtrueブロックもelseブロックも1行だったけど、複数行の場合はどうすると思う?答えはこれだよ。
if x = 10 then
begin
print_string "true\n";
print_string "true";
end
else
print_string "false";;
この手品のネタが分かったかな?そう、beginと endキーワードで 実行文を挟むんだ。 あっ、それと、print_stringの最後の;に気をつけてね。 この場合はいるピヨ。 このようにif文は命令言語ぽい構文だからすぐに慣れると思うピヨ。 これでif文はおしまい。 おつかれー。