Боряна обнови решението на 10.10.2015 14:29 (преди около 10 години)
+def convert_to_bgn(price, currency)
+ if currency == :usd
+ (price * 1.7408).round(2)
+ elsif currency == :eur
+ (price * 1.9557).round(2)
+ elsif currency == :gbp
+ (price * 2.6415).round(2)
+ else
+ price
+ end
+end
+
+def compare_prices(price, currency, second_price, second_price_currency)
+ first_result = convert_to_bgn(price, currency)
+ second_result = convert_to_bgn(second_price, second_price_currency)
+ if first_result < second_result
+ - 1
+ elsif first_result == second_result
+ 0
+ else
+ 1
+ end
+end
Здравей :)
Няколко бързи коментара:
- Помисли дали няма да е по-добре ако използваш
case ... when ...? Не сме ви го показвали, така че е напълно пожелателно. - В момента имаш доста дублиране на
(price * ...).round(2). Подсещам, че всичко е израз и връща резултат - дориifиcase. Този резултат може да бъде присвоен на променлива. -
if-а за сравнението вcompare_pricesне ти трябва и ще е много по-прегледно без него. Прочети за оператора<=>. - Има някаква асиметрия в
currencyиsecond_price_currency. Също междуpriceиsecond_price. Предлагамfirst_price,first_currency,second_priceиsecond_currency. Как ти се струва?
Напомням, че все още имаш възможност да подобриш кода и да ни изпратиш ново решение :) И ако не си съгласна с някой от коментарите сподели, за да го дискутираме. :)
Благодаря ти за коментарите :)
За следващата задача ще се постарая да се коригирам :)
