使用预定义数组作为案例块中的参数

时间:2014-03-31 20:58:06

标签: ruby

我是ruby的新手,但我想创建一个使用数组(或类似参数)的case块

这是我的想法

thirty_one_days_month = [1, 3, 5, 7, 8, 10, 12]
thirty_days_month = [4, 6, 9, 11]

case month
when thirty_one_days_month #instead of 1, 3, 5, 7, 8, 10, 12
#code
when thirty_days_month #instead 4, 6, 9, 11
#code

我知道这段代码不会起作用,但这一切都可能吗?

2 个答案:

答案 0 :(得分:4)

使用splat运算符:

case month
when *thirty_one_days_month
  #code
when *thirty_days_month
  #code
end

无论如何,这就是我写它的方式:

days_by_month = {1 => 31, 2 => 28, ...}

case days_by_month[month]
when 31
  # code
when 30
  # code
end

答案 1 :(得分:1)

您可以使用如下的案例陈述:

case
when thirty_one_days_month.include?(month)
    puts "31 day month"
when thirty_days_month.include?(month)
    puts "30 day month"
else
    puts "February"
end