Петър обнови решението на 09.10.2015 22:35 (преди около 9 години)
+CURRENCY = {:usd => 1.7408, :eur => 1.9557, :gbp => 2.6515, :bgn => 1}
+
+def get_currency_value(item)
+ CURRENCY[item]
+end
+
+def convert_to_bgn(price, currency)
+ result = get_currency_value(currency) * price
+ result.round(2)
+end
+
+def compare_prices(price_1, currency_1, price_2, currency_2)
+ price_bgn_1 = convert_to_bgn(price_1, currency_1)
+ price_bgn_2 = convert_to_bgn(price_2, currency_2)
+
+ price_bgn_1 <=> price_bgn_2
+end
Като цяло много правилно си се ориентирал с употребата на hash
- Беше ли нужно
get_currency_value
? - Има малко по-красив синтаксис, когато ключовете са символи (
{:foo => 1, :bar => 2}
vs{foo: 1, bar: 2}
)
Можеш да поработиш малко над имената си
- Като видя
price_bgn_1
чета "цена лева едно". Защо не "първа цена в лева"? -
result
за име на променлива не говори много. Всичко е някакъв вид result. Тук можеш или да го именуваш спрямо семантиката в контекста на проблема (цена в лева) или изцяло да го пропуснеш (convert_to_bgn
да стане oneliner) - Какво всъщност е този hash? ВАЛУТА? Или ОБМЕНЕН КУРС?