Боряна обнови решението на 10.10.2015 14:29 (преди около 9 години)
+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
. Как ти се струва?
Напомням, че все още имаш възможност да подобриш кода и да ни изпратиш ново решение :) И ако не си съгласна с някой от коментарите сподели, за да го дискутираме. :)
Благодаря ти за коментарите :)
За следващата задача ще се постарая да се коригирам :)