読者です 読者をやめる 読者になる 読者になる

Hashから値を取り出す時にもコードに意思を埋め込む

何気ないところでもコードに性格でますよね。下記のようにHashからvalueを取得するの一つとっても

hash = {name: 'foo'}
hash[:name] # foo

下記のようにfetchを使う事でアクセスするキーが必ず存在することをコードで示せます。

動作が違うのはHash#fetchはキーが存在しない場合にKeyErrorがraiseされることです。

hash = {name: 'foo'}
hash.fetch(:name) # foo

特に気にもせず前者の方法を使っていたのですが、Hash#fetchを使う事でアクセスする際にキーが無ければnilではなくエラーにすることで必ずキーが存在するはずだという前提条件を示す事が出来て便利。

csvjsonを読み込んで特定のキーがある前提で処理をする時などはfetchを使う事でhash[:count].to_iみたいに数値型のキーが間違っていても0になって気付かないとかは開発中にすぐに気付けて良さそうですね。

class Hash