Иван обнови решението на 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