Ruby Ruby 反射机制常用方法

hxygsh · 2015年09月27日 · 最后由 PeishuaiLee 回复于 2017年07月16日 · 4220 次阅读

1、获取类的名称: .class 2、获取超类的名称:.superclass 3、获取类包含的模块:.class.included_modules 4、检查是否为实例对象:.instance_of? 5、呈现对象继承关系:.class.ancestors 返回类和模块名称 6、返回变量 及常量:.instance_variables.sort .constants.sort .local_variables .global_variables 7、获取对象包含的方法:.methods.sort .instance_methods .private_methods 8、检查对象是否对方法负责:.respond_to?

收藏了。 还有:获取一个对象可以操作的方法或者属性

something.methods

在 irb 中,输入

something.methods.grep /pre/

可以列出所有命令或者参数名称中包含 pre 的项。 比如 String 类型的变量有一个方法叫做 precompile,那么执行上面的命令,这个方法就会显示出来。

从 java 来的吧,send 的大法怎么不说?

在 java 中 有这样的 api: method=Class.forName("path1.path2.path3...className").newInstance(); method.invoke(obj,args...); 请问在 ruby 中如何实现上述类似的机制:也就是根据 rb 文件路径加载类,并且进行反射调用方法。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号