JRubyをつつくXーヒアドキュメント。表現は人それぞれ。
#AND演算
puts 'AND論理演算のテストピヨ♪'
flag = true
flag1 = true
printf( "%s AND %s = %s \n", flag, flag1, ( flag and flag1 ) )
printf( "%s && %s = %s \n", flag, flag1, flag && flag1 )
flag1 = false
printf( "%s AND %s = %s \n", flag, flag1, ( flag and flag1 ) )
printf( "%s && %s = %s \n", flag, flag1, flag && flag1 )
#OR演算
puts "\n"
puts 'OR論理演算のテストピヨ♪'
flag = true
flag1 = true
printf( "%s OR %s = %s \n", flag, flag1, ( flag or flag1 ) )
printf( "%s || %s = %s \n", flag, flag1, flag || flag1 )
flag1 = false
printf( "%s OR %s = %s \n", flag, flag1, ( flag or flag1 ) )
printf( "%s || %s = %s \n", flag, flag1, flag || flag1 )
#NOT演算
puts "\n"
puts 'NOT論理演算のテストピヨ♪'
flag = true
flag1 = false
printf( "%s && %s の否定(記号)は%s \n", flag, flag1, !( flag && flag1 ) )
printf( "%s || %s の否定(記号)は%s \n", flag, flag1, !( flag || flag1 ) )
printf( "%s && %s の否定は%s \n", flag, flag1, ( not( flag && flag1 ) ) )
printf( "%s || %s の否定は%s \n", flag, flag1, ( not( flag || flag1 ) ) )
実行してね♪実行したら普通の論理演算だという事が分かると思うピヨ♪当たり前だよね。
だけど、記号とアルファベットの2つの表現があるのがポイント、ピヨォ♪よーく記号表記とアルファベット表記のプログラムをつついてみよう。
printf( "%s AND %s = %s \n", flag, flag1, ( flag and flag1 ) ) #括弧が多いピヨ
printf( "%s && %s = %s \n", flag, flag1, flag && flag1 )
そう一目で分かる違いは括弧が多いことなんだ。これはボクが意味なくしている事なんかじゃないピヨ。試しに括弧を外してコンパイルしてごらん。
printf( "%s AND %s = %s \n", flag, flag1, flag and flag1 ) #括弧を消してみた
printf( "%s && %s = %s \n", flag, flag1, flag && flag1 )
括弧を外すとシンタックスエラーになるピヨね。これは何でかというと、アルファベット表記の場合は優先順位が低いからだピヨォッ! 優先順位が低いと言う事はprintfに結果を渡さずに、flag and flag1を渡そうと試みているという事なんだ。それでシンタックスエラーが出るという寸法さ♪JRuby恐るべし!
ボクは始めこの二つの表記時シンタックスシュガーだと思ったんだ。だけどJRubyマニュアルを見て吃驚!JRubyに無駄なしだね。優先順位を操れると、プログラムの表現力がグッと増すから二つの表記を覚えておこう。
初心者は混乱すると思うから、最後に二つの表記の使い分けについて書いておくピヨ♪
【使い分けのポイント】
普段は記号表記を使おう。そして、優先順位を考慮する必要が生じたら、改めてアルファベット表記の方を使えないか検討してみよう。
それにしても、論理演算でこんなにも記事が長くなるとは思っていなかったピヨ♪それだけJRubyの奥が深いという事だね。おしまい♪