Здравко обнови решението на 08.10.2015 22:40 (преди около 9 години)
+def convert_to_bgn(price, currency)
+ case
+ when currency == :bgn
+ price.round(2)
+ when currency == :usd
+ (price * 1.7408).round(2)
+ when currency == :eur
+ (price * 1.9557).round(2)
+ when currency == :gbp
+ (price * 2.6415).round(2)
+ end
+end
+
+def compare_prices(first_price, first_currency, second_price, second_currency)
+ first_price_bgn = convert_to_bgn(first_price, first_currency)
+ second_price_bgn = convert_to_bgn(second_price, second_currency)
+ first_price_bgn <=> second_price_bgn
+end
Като цяло добре. Няколко неща:
- Можеш да "switch"-ваш по
currency
, вместо да проверяваш с==
на всеки ред - Използвай едноредовата версия на
case
(when condition then value
) - Добре е да отделяш различните смислови компоненти в методите си с нов ред. Например в
compare_prices
, първите два реда са някакъв вид processing, докато последният е връщане на стойност
Ако имаш желание, можеш да помислиш за алтернативно решение, така че да не ти се налага да повтаряш price
и round(2)
за всяка валута.