You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中如何基于预设数值区间简洁判断数字所属分类

实现方案

Ruby 中最简洁、可读性最高的写法是直接用 case 语句做范围匹配,完全贴合定义的区间规则:

def get_value_level(num)
  case num
  when ...10 then 'very_low'   # 匹配 <10
  when 11..20 then 'low'       # 匹配11-20
  when 21..30 then 'medium'    # 匹配21-30
  when 31..40 then 'high'      # 匹配31-40
  when 41.. then 'very_high'   # 匹配 >=41
  end
end

# 示例调用
get_value_level(23)
# 返回 => "medium"

补充说明

  • 写法里的...10是 Ruby 原生语法中不包含终点的范围,正好对应规则里的<10;41..是 Ruby 2.6 及以上版本支持的无终点开范围,对应规则里的41+。
  • 如果需要兼容 Ruby 2.6 以下的老版本,把最后一个分支的41..替换为41..Float::INFINITY即可。
  • 原始规则没有覆盖数字10的分类,如果实际业务需要把10归到very_low分类,把第一个分支的...10改成..10(两个点,包含终点10)就行。

如果追求极致短代码,也可以用哈希+查找的写法,但可读性远不如case语句,不推荐在业务代码中使用:

levels = {...10 => 'very_low', 11..20 => 'low', 21..30 => 'medium', 31..40 => 'high', 41.. => 'very_high'}
levels.find { _1 === 23 }[1] # => "medium"

内容的提问来源于stack exchange,提问作者Neil Middleton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:24:13