Spec-Zone.ru › Ruby 3.1

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

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