Александрина обнови решението на 11.10.2015 23:12 (преди около 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)
+ elsif currency == :bgn
+ price.round(2)
+ end
+
+end
+
+def compare_prices(price,currency,price_two,currency_two)
+
+ if convert_to_bgn(price,currency)>convert_to_bgn(price_two,currency_two)
+ 1
+ elsif convert_to_bgn(price,currency)<convert_to_bgn(price_two,currency_two)
+ -1
+ else 0
+ end
+
+end
Здравей :)
Решението ти изглежда правилно от функционална гледна точка, но виждам доста стилови проблеми:
- Погледни ръководството ни по стил :)
- Използвай 2 празни места за отместване. Не табове и не 4 спейса. Настрой текстовия си редактор на спейсове, вместо табове - иначе, когато paste-неш кода тук, табовете ще се появят като 8 спейса.
- Слагай празно мясно след запетаите и около операторите (в случая
*
,<
и>
). - Не слагай празни редове в началото и в края на методите.
- Имаш доста повторение на
(price * число).round(2)
. Опитай се да го изчистиш. Подсказвам, че всичко в Ruby е израз - дори иif
иcase
. Тоест можеш да присвоиш резултата отif
иcase
на променлива и да го използваш после. За пример може да разгледаш слайдовете от последната лекция. :) - В
compare_prices
нямаш нужда от условната конструкция. Погледни документацията за оператора<=>
. :)
До понеделник в 17:30 можеш да обновяваш решението си колкото пъти решиш. Ако имаш въпроси за нещо - питай! :)