Исполняемый файл Python с тремя сценариями

В этом примере у вас есть синтаксические ошибки. Вы хотите использовать запятые в конце строк вашего хеша, вы не можете добавить два хэша вместе, вместо этого вам нужно объединить. Слияние будет принимать приемник (то, что вы вызываете слиянием) и переопределить любые значения из аргумента. Кроме того, при использовании : в вашем хеше ваши ключи становятся символами, что означает, что вам не нужны кавычки.

Это будет правильный способ определения вспомогательного модуля.

module HxHelper
  def method_1
    {
      key_1: "@h.htype",
      key_2: "value_2",
    }.merge(method_2)
  end

private
  def method_2
    {
      key1: "value_1",
    }
  end
end

Затем вы можете использовать его следующим образом:

class Test
  include HxHelper
end
t = Test.new
t.method_1

Это вернет:

{:key_1=>"@h.htype", :key_2=>"value_2", :key1=>"value_1"}

Если вы вызываете t.method_2, вы получаете сообщение об ошибке о вызове частного метода.

Если в hash хеша method_2 был ключ из key_1, ваше возвращаемое значение было бы:

{:key_1=>"value_1", :key_2=>"value_2"}

, потому что :key_1 из аргумента overrode

Если вы хотите вызвать этот частный метод, вы можете сделать:

t.send(:method_2)

Если у вас был метод, который принимал аргументы, вы просто добавляете их после символа имени метода:

private
  def test(num1, num2)
    return(num1 + num2)
  end

  send(:test, 1, 2)

Это вернет 3

0
задан Abirami 20 January 2019 в 06:22
поделиться