gpt4 book ai didi

ruby - 如何通过自省(introspection)判断方法是读写、只读还是只写?

转载 作者:数据小太阳 更新时间:2023-10-29 08:40:57 24 4
gpt4 key购买 nike

我来自 Java,想知道我是否可以使用内省(introspection)为对象“设置”实例变量。

例如,如果我有以下类声明,带有两个实例变量,first_attributesecond_attribute:

class SomeClass  
attr_accessor :first_attribute
attr_reader :second_attribute

def initialize()
# ...
end
end

我希望能够获取实例方法,大概是通过调用 SomeClass.instance_methods 并知道这些实例方法中哪些是读/写的,哪些是只读的。

在 Java 中我可以这样做:

PropertyDescriptor[] properties = PropertyUtils.GetPropertyDescriptors(SomeClass);
for (prop : properties) {
if (prop.getWriteMethod() != null) {
// I can set this one!
}
}

我如何在 Ruby 中执行此操作?

最佳答案

实际上并没有像 Java 属性那样内置的东西,但是您可以像这样很容易地做到这一点:

self.class.instance_methods.grep(/\w=$/)

这将返回类中所有 setter 方法的名称。

关于ruby - 如何通过自省(introspection)判断方法是读写、只读还是只写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5966752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com