グローバル変数は未定義でもエラーにならない
puts a #=> NameError: undefined local variable or method `a' for main:Object puts $a #=> nil
条件のない elsif
if false puts "false" elsif puts "true" end #=> true
マニュアルには書いて無いようだけど・・・。マニュアルの記述は条件が必須っぽい雰囲気だけど。
再定義可能なメソッド
再定義可能なのは
| ^ & <=> == === =~ > >= < <= << >>
+ - * / % ** ~ +@ -@ [] []= `
ダメなのは
= ?: .. ... ! not && and || or ::
Hash#fetch
使うことがあるのか?
map = {"a"=>1} # キーが存在する場合は値を返す map.fetch("a") #=> 1 # キーが存在しない場合はエラー map.fetch("b") #=> IndexError: key not found # キーが存在しない場合にデフォルト値を返す map.fetch("b","B") #=> "B" # キーが存在しない場合にブロックを評価した値を返す map.fetch("b"){|key| key.upcase} #=> B
chop と chomp
chop は末部を必ず取り除き、chomp は "\r" "\r\n" "\n" は取り除くけど他は取り除かない。