класс Refinement
Refinement — это класс self (текущий контекст) внутри refine оператора. Он позволяет импортировать методы из других модулей, см. import_methods.
Открытые методы экземпляра
import_methods(module, ...) → self Показать исходный код
static VALUE
refinement_import_methods(int argc, VALUE *argv, VALUE refinement)
{
} Импортирует методы из модулей. В отличие от 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
Также алиасирован как: import_methods
refined_class → class Показать исходный код
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);
} Возвращает класс, уточнённый получателем.
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.