-3

我是 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 Tester lastname Testing ”

所以,我使用其他方式。我为 names[:firstname] names[:lastname] 设置了两个实例变量 @firstname 和 @lastname,如下所示:

def test_method(names={})
        @firstname = names[:firstname]
        @lastname = names[:lastname]
        return @firstname, @lastname
end

我能够得到我想要的结果,但是如果我有超过 10 个参数需要设置?如果有更好的方法来获得结果?

4

2 回答 2

1

试试这个

def test_method(names = {})
  names.values # no need to write even return, in ruby last statement of method, is   automatically returnd
 end
于 2013-08-29T03:48:55.583 回答
0

是的。如果您的所有哈希键都对应于实例变量名称,您可以简单地遍历您的键值对并使用instance_variable_set

def test_method(names = {})
  names.each do |key, value|
    instance_variable_set("@#{key}", value)
  end
end
于 2013-08-29T03:28:25.847 回答