Ruby/Rails中如何优化多if条件判断语句?
优化多条件判断的Ruby写法
针对你这种多区域对应固定值的场景,最简洁易维护的方式是用哈希映射,新增区域时只需要在哈希里添加键值对即可,不用重复写if语句。
基础实现
region_value_map = { "uk" => 1, "us" => 2, "ind" => 3, "cn" => 4 } value = region_value_map[region]
带默认值的健壮版本
如果遇到未定义的区域,你可以设置一个默认值避免nil:
region_value_map = { "uk" => 1, "us" => 2, "ind" => 3, "cn" => 4 } # 比如默认值设为0,或者根据业务需求调整 value = region_value_map.fetch(region, 0)
补充:case语句写法
如果场景更复杂(比如每个分支有额外逻辑),也可以用case语句代替多个if,代码结构更清晰:
value = case region when "uk" then 1 when "us" then 2 when "ind" then 3 when "cn" then 4 else 0 # 默认值 end
但对比来看,哈希映射在仅需键值对应的场景下更胜一筹,后续新增区域只需要在哈希里追加一行,完全不用修改取值逻辑,维护成本极低。
内容的提问来源于stack exchange,提问作者anyonymousgamer
相关产品推荐
相关产品推荐

