Решение на Първа задача от Иван Станков

Обратно към всички решения

Към профила на Иван Станков

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 8 успешни тест(а)
  • 0 неуспешни тест(а)

Код

EXCHANGE_RATE = {bgn: 1, eur: 1.9557, usd: 1.7408, gbp: 2.6415}
def convert_to_bgn (quantity, currency)
(EXCHANGE_RATE[currency] * quantity).round(2)
end
def compare_prices (amount_one, first, amount_two, second)
convert_to_bgn(amount_one, first) - convert_to_bgn(amount_two, second)
end

Лог от изпълнението

........

Finished in 0.00668 seconds
8 examples, 0 failures

История (3 версии и 1 коментар)

Иван обнови решението на 11.10.2015 13:42 (преди около 9 години)

+
+def initialize()
+ @currency = {:bgn => 1, :eur => 1.9557, :usd => 1.7408, :gbp => 2.6415}
+end
+
+def convert_to_bgn (quantity, currency)
+ (@currency[currency] * quantity).round(2)
+end
+
+def compare_prices (amount_one, first, amount_two, second)
+ convert_to_bgn(amount_one, first) - convert_to_bgn(amount_two, second)
+end

Това не би трябвало да работи или поне трябва да получаваш съобщение, че правиш глупости като го пускаш. Махни initialize метода. Той се използва, когато пишеш класове и се извиква автоматично от Ruby след като направиш нов обект Person.new, т.е. нещо като конструктор. @currency е инстанционна праменлива, т.е. всеки нов обект си има може да си държи нещо в нея, което си е само за него т.е. ако Person имаше име то то щеше да се пази в @name. Та в Ruby като пишеш някакъви свободни методчета като тези, те се слагат като private в класа Object. С други думи ти сега си счупил Object. Та:

  • махни initialize метода, пс. Можеш да използваш константа ако искаш FOO_BAR_BAZ = ...
  • помисли за по-добро име за hash-а, това трябва да са някакви обменни курсове
  • има по-кратък синтаксис за hash-а {foo: 123, bar: 'adf'}
  • погледни дали няма друг начин да сравняваш числата в compare_prices

Иван обнови решението на 12.10.2015 09:36 (преди около 9 години)

-def initialize()
- @currency = {:bgn => 1, :eur => 1.9557, :usd => 1.7408, :gbp => 2.6415}
-end
+EXCHANGE = {bgn: 1, eur: 1.9557, usd: 1.7408, gbp: 2.6415}
+
def convert_to_bgn (quantity, currency)
- (@currency[currency] * quantity).round(2)
+ (EXCHANGE[currency] * quantity).round(2)
end
def compare_prices (amount_one, first, amount_two, second)
convert_to_bgn(amount_one, first) - convert_to_bgn(amount_two, second)
-end
+end

Иван обнови решението на 12.10.2015 09:40 (преди около 9 години)

-EXCHANGE = {bgn: 1, eur: 1.9557, usd: 1.7408, gbp: 2.6415}
+EXCHANGE_RATE = {bgn: 1, eur: 1.9557, usd: 1.7408, gbp: 2.6415}
def convert_to_bgn (quantity, currency)
- (EXCHANGE[currency] * quantity).round(2)
+ (EXCHANGE_RATE[currency] * quantity).round(2)
end
def compare_prices (amount_one, first, amount_two, second)
convert_to_bgn(amount_one, first) - convert_to_bgn(amount_two, second)
end