Nobody
2015/12/01 22:37:32 投稿
4

I don't like 'case' very much.

case文のパターンのほとんどが1対1の関係で主に文字を返す時などはHashを使ってコンパクトに書きたい

Before

def bootstrap_type(type)
  case type
  when :alert
    "warning"
  when :error
    "error"
  when :notice
    "info"
  when :success
    "success"
  else
    type.to_s
  end
end

After

def bootstrap_type(type)
  {
    alert: "warning",
    error: "error",
    notice: "info",
    success: "success",
  }[type] || type.to_s
end

=begin
# 1) さらに省略したければ
def bootstrap_type(type)
  {
    alert: "warning",
    notice: "info",
  }[type] || type.to_s
end

# 2) 'type.to_s' の部分は '"default"' など特定の文字を返しても良い

# 3) [type] は [type.to_sym] でも良い

# 4) 知らないパターンをエラーにする
'|| type.to_s' の部分は次のようにエラーにしても良い
'|| raise("Unknown type: #{type}")'
=end

みんなのコメント