如何获取方法定义中的名称或参数?

时间:2011-08-21 06:53:55

标签: ruby

有没有办法在方法中获取参数名称列表?

例如,假设我有以下方法定义:

def speak(name, age, address)
  # some code
end

如何获得nameageaddress的数组?

3 个答案:

答案 0 :(得分:2)

您可以直接使用这些值。

def speak(name, age, address)
  puts "Hello #{name}!"
end

要访问您可以使用local_variables的名称,但我不建议使用它。

def speak(name, age, address)
  p local_variables # => [:name, :age, :address]
end

但很可能你会想要使用哈希:

def speak(hash)
   # use the keys/values of hash
end

现在你可以使用

speak({:name => "foo", :age => 42, :address => "123"})
# or
speak(:name => "foo", :age => 42, :address => "123")

答案 1 :(得分:1)

您可以使用local_variables,但有更好的方法:

def speak(name, age, address)
  p self.method(__method__).parameters #=> [[:req, :name], 
                                            [:req, :age], 
                                            [:req, :address]]
end

当您使用local_variables时,您应该在方法的开头使用它:

def speak(name, age, address)
  foo = 1
  p local_variables #=> [:name, :age, :address, :foo]
end

答案 2 :(得分:0)

找到了答案!

def speak (name, age, address)
 puts local_variables
end