Spec-Zone.ru › Ruby 3.2

класс 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API