我有以下问题:在Ruby中,如何知道方法是属性访问器?
我重命名为特定类的所有实例方法,为了给他们额外的行为使用alias_method_chain。我得到的所有实例方法与下面的代码行:
self.class.instance_methods(false)
通过这样做,我得到我所有的实例方法,但我也感到我使用attr_accessor/attr_reader/attr_writer定义的gettes和setter。 我需要做的是检测从上一行代码返回的哪些方法是访问方法,因为我不想重命名这些方法。
很明显,我可以检测到方法名是否在末尾有一个“=”,这将使它成为一个setter,如果存在,我可以看到getter是否被定义为,但是当有只定义一个吸气剂?我如何检查?特别考虑到这些属性在初始化之前不能用于类方法“instance_variables”?
感谢您的帮助!
可以检测是否在方法名具有“=”结尾,但这种方法可以被定义手册。这并不意味着,它是用attr_accessor/attr_writer定义的。 – knut