В этом примере у вас есть синтаксические ошибки. Вы хотите использовать запятые в конце строк вашего хеша, вы не можете добавить два хэша вместе, вместо этого вам нужно объединить. Слияние будет принимать приемник (то, что вы вызываете слиянием) и переопределить любые значения из аргумента. Кроме того, при использовании :
в вашем хеше ваши ключи становятся символами, что означает, что вам не нужны кавычки.
Это будет правильный способ определения вспомогательного модуля.
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