無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

OCamlをつつく11-条件判断。関数でも判定は必要!

今度はif文をつつくよ。関数型言語は命令型言語と思考が違いすぎると思う人も多いと思うけど、条件判定が必要な事実は変わらないからif文をつっつくピヨ。


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";;


この手品のネタが分かったかな?そう、beginendキーワードで 実行文を挟むんだ。 あっ、それと、print_stringの最後の;に気をつけてね。 この場合はいるピヨ。 このようにif文は命令言語ぽい構文だからすぐに慣れると思うピヨ。 これでif文はおしまい。 おつかれー。


バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ
10 then print_string "true" else print_string "false";; このプログラムを実行してみて。if文の動きがわかりやすいと思うピヨ。if 条件で結果がt...">別窓 | OCaml | コメント:1 | トラックバック:0 | ∧top | under∨
<<F#をつつく3−評価束縛。君も束縛するんだね♪ | 無差別に技術をついばむ鳥 | 書籍をつつく4-すぐに使える実例で学ぶLINQ実践サンプル集。サンプルが欲しい方はお勧め。>>

この記事のコメント

elseのないif ... then ...は単にif ... then ... else ()の略なので、

# let x = 1;;
val x : int = 1
# if x > 10 then print_string "true";;
- : unit = ()

ってunit値が帰ってくるだけで、別に何もおかしくならないですよ。^_^
2009-02-02 Mon 05:30 | URL | OCamlファン #-[ 内容変更]
∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |