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