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 に答える