我是Ruby的新手,我只是在学习哈希参数。 我只是对如何使用哈希参数
返回值有疑问我创建了一个名为Test的类,包括一个带有散列参数的名为test_method的方法,如下面的代码:
class Test
def test_method(names={})
names[:firstname]
names[:lastname]
return names
end
end
我称之为
test = Test.new
myname = test.test_method(firstname: 'Tester', lastname: 'Testing')
puts myname
当然,我得到的结果是“名字测试员姓氏测试”
所以,我用其他方式。 我为名称[:firstname] names [:lastname]设置了两个实例变量@firstname和@lastname,如下所示:
def test_method(names={})
@firstname = names[:firstname]
@lastname = names[:lastname]
return @firstname, @lastname
end
我能够得到我想要的结果,但如果我需要设置超过10个参数? 如果有更好的方法来获得结果?
答案 0 :(得分:1)
试试这个
def test_method(names = {})
names.values # no need to write even return, in ruby last statement of method, is automatically returnd
end
答案 1 :(得分:0)
是。如果所有哈希键对应于实例变量名称,则只需循环键入值对并使用instance_variable_set
:
def test_method(names = {})
names.each do |key, value|
instance_variable_set("@#{key}", value)
end
end