类 Refinement
Refinement
是 refine
语句中 self
(当前上下文)的一个类。它允许从其他模块导入方法,请参见 import_methods
。
公共实例方法
import_methods(module, ...) → self 点击切换源代码
从模块导入方法。与 Module#include
不同,Refinement#import_methods
复制方法并将它们添加到精炼中,因此精炼在导入的方法中被激活。
请注意,由于方法复制,只有在 Ruby 代码中定义的方法才能被导入。
module StrUtils def indent(level) ' ' * level + self end end module M refine String do import_methods StrUtils end end using M "foo".indent(3) #=> " foo" module M refine String do import_methods Enumerable # Can't import method which is not defined with Ruby code: Enumerable#drop end end
static VALUE refinement_import_methods(int argc, VALUE *argv, VALUE refinement) { }
也称为:import_methods
refined_class → class 点击切换源代码
已弃用;建议使用 target
。
返回接收者精炼的类。
static VALUE rb_refinement_refined_class(VALUE module) { rb_warn_deprecated_to_remove("3.4", "Refinement#refined_class", "Refinement#target"); return rb_refinement_module_get_refined_class(module); }
target → class_or_module 点击切换源代码
返回接收者精炼的类或模块。
module M refine String do end end M.refinements[0].target # => String
VALUE rb_refinement_module_get_refined_class(VALUE module) { ID id_refined_class; CONST_ID(id_refined_class, "__refined_class__"); return rb_attr_get(module, id_refined_class); }