Ruby归因方法

时间:2014-01-08 16:50:53

标签: ruby reflection attributes

我正在寻找一种方法来对类/模块中的方法进行分类或归属。我需要在类中标记方法,所以当ruby脚本启动时,我可以使用反射来识别包含具有特定标记的方法的模块和类。

C#有这样的东西,它被称为attributes,虽然术语属性在ruby中意味着不同的东西。我很好奇这个功能是否存在。

1 个答案:

答案 0 :(得分:1)

您可以使用.methods

列出方法

实施例

class TestClass
  def method1
  end

  def tag_method2
  end

  def method3
  end
end

test = TestClass.new

test.methods
# => [:method1, :tag_method2, :method3, :nil?, :===, :=~, :!~, :eql?, :hash, :<=>, :class, :singleton_class, ... ]

您可以选择过滤

test.methods.select{|m| m.to_s.include? "tag"}
# => [:tag_method2]

从Object继承的所有类都可以执行.methods

http://ruby-doc.org/core-1.9.3/Object.html#method-i-methods