Рубин |Огурец: рефакторинг моей трансформации - PullRequest
0 голосов
/ 04 ноября 2011

Я написал преобразование, чтобы захватить одно из следующих слов: «первое», «второе», «третье» или «четвертое», обозначающее кварталы года. Вот что я написал, я надеялся, что может быть гораздо более простой способ сделать это. Есть мысли?

CAPTURE_QUARTER = Transform /^(first|second|third|fourth)$/ do |quarter|
  case quarter
    when 'first'
      1
    when 'second'
      2
    when 'third'
      3
    when 'fourth'
      4
  end
end

Заранее спасибо!

UPDATE: Возможное решение:

CAPTURE_QUARTER = Transform /^(first|second|third|fourth)$/ do |quarter|
  {first: 1, second: 2, third: 3, fourth: 4}[quarter.to_sym]
end

Мысли об этом?

1 Ответ

1 голос
/ 04 ноября 2011

Я могу предложить вам еще один способ сделать это:

quarters = {first: 1, second: 2, third: 3, fourth: 4}
CAPTURE_QUARTER = Transform /^(first|second|third|fourth)$/ do |quarter|
  quarters[quarter.to_sym]
end
...