class Refinement
Refinement ist eine Klasse von self (aktueller Kontext) innerhalb einer refine-Anweisung. Sie ermöglicht den Import von Methoden aus anderen Modulen, siehe import_methods.
Öffentliche Instanzmethoden
Source
static VALUE
refinement_import_methods(int argc, VALUE *argv, VALUE refinement)
{
}
Importiert Methoden aus Modulen. Im Gegensatz zu Module#include kopiert Refinement#import_methods Methoden und fügt sie der Verfeinerung hinzu, sodass die Verfeinerung in den importierten Methoden aktiviert wird.
Beachten Sie, dass aufgrund der Methodenkopie nur in Ruby-Code definierte Methoden importiert werden können.
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
Auch als aliasisiert: import_methods
Source
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);
}
Gibt die vom Empfänger verfeinerte Klasse oder das Modul zurück.
module M refine String do end end M.refinements[0].target # => String