有没有更好的方法在Ruby中使用哈希参数返回值?

时间:2013-08-29 03:24:00

标签: ruby hash arguments

我是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个参数? 如果有更好的方法来获得结果?

2 个答案:

答案 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