PHPユーザーがRubyのif文を使うとつまづく点

先日実装をしていてはまってしまった点です。

 

PHP歴が長い私なのですが

PHPのif文だと==を使えば文字列の数字でも通常の通じでも比較して判定してくれますね。

===を使うと型も見て厳密に判定してくれるようになります。

// 一致のケース
if ("1" == 1) {
  var_dump("equal");
} else {
  var_dump("not equal");
}
// => string(5) "equal"

// 不一致のケース
if ("1" === 1) {
  var_dump("equal");
} else {
  var_dump("not equal");
}
// => string(9) "not equal"

しかし、Rubyになると型を厳密に判定されます。
文字列の数字と数字の比較では不一致と判定されます。

もし比較する場合は型変更などをする必要があります。

# 不一致のケース
if "1" == 1
    puts "equal"
else
    puts "not equal"
end
# => not equal

# 一致のケース
if "1".to_i == 1
    puts "equal"
else
    puts "not equal"
end
# => equal

どの言語にもあるif文で慣れ親しんだものではありますが

些細な違いがあるので注意が必要ですね!

 

何か参考になれば幸いです(*^^*)