1

我有以下助手,它应该把一天写成文字取决于数字:

def day_in_words(number)
    case number
    when 0
      "Sunday"
    when 1
      "Monday"
    when 2
      "Tuesday"
    when 3
      "Wednesday"
    when 4
      "Thursday"
    when 5
      "Friday"
    when 6
      "Saturday"
    when 7
      "Sunday"
    when 8
      "Monday"
    when 9
      "Tuesday"
    when 10
      "Wednesday"
    when 11
      "Thursday"
    ...
    when 16
      "Sunday"
    when 17
      "Monday"
    when 18
      "Tuesday"
    when 19
      "Wednesday"
    when 20
      "Thursday"
    when 21
      "Friday"
    else
      "Unknown Day"
    end
  end

如何重构那个助手?

4

3 回答 3

7

你有没有试过这个->

Date::DAYNAMES[number%7]
于 2012-07-29T17:06:57.360 回答
1

您可以使用:

def day_in_words(number)
  return "Unknown Day" if number > 20
  %w[sun mon tue wed thu fri sat].cycle(3).to_a[number]
end
于 2012-07-29T17:13:04.743 回答
0

首先想到的是简单地使用模 7 作为日期名称数组的索引:

def day_in_words(number)
  return ['Sun','Mon','Tue','Wed','Thurs','Fri','Sat'][number % 7]
end
于 2012-07-29T17:02:26.163 回答