Как умножить значение из хэшей в ruby? - PullRequest
0 голосов
/ 13 февраля 2020

Я только начинаю учиться ruby. У меня простой вопрос. У меня есть ха sh exchange_rate = ["usd" => 1, "eur" => 1.2, "gbp" => 1.3] Итак, что я хочу сделать, я хочу сделать скрипт, который будет рассчитывать скорость записи. Например, если я хочу узнать курс доллара США за 20 евро, скрипт покажет мне, your exchange rate is 24USD

Это мой код

class ExchangeRate
  def initialize (exchange_amount_id)
    @exchange_amount = exchange_amount_id
  end

  exchange_rate = ["usd" => 1, "eur" => 1.2, "gbp" => 1.3]

  def exchange ()
  end 

  classob = ExhangeRate.new(20)
  classob.exchange()
  end
end

Но все же я хочу знать, как это сделать расчеты, для отображения скорости записи для разных валют

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Я думаю, вы могли бы сделать этот класс в качестве службы. И вам не нужно создавать новые объекты из этого. Вместо этого просто создайте один метод .call класса.

class RateExchanger
  EXCHANGE_RATES = {
      usd: 1,
      eur: 1.2,
      gbp: 1.3
  }.freeze

  def self.call(to:, value:, from: :usd)
    (value / EXCHANGE_RATES[from] * EXCHANGE_RATES[to]).round(2)
  end
end

RateExchanger.call(to: :gbp, value: 100, from: :eur)
1 голос
/ 13 февраля 2020
class ExchangeRate
  def initialize (rate)
    @rate = rate
  end

  def exchange(from, to, value)
    @rate.fetch(from) / @rate.fetch(to) * value
  end
end

rate = { usd: 1, eur: 1.2, gbp: 1.3}
money = ExchangeRate.new(rate)
puts money.exchange(:eur, :usd, 20)
# you will get 24

примечание: fetch найдет значение внутри ha sh с заданным ключом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...