basyura's blog

あしたになったらほんきだす。

3 周目で間違えたもの

グローバル変数は未定義でもエラーにならない

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" は取り除くけど他は取り除かない。