Project

General

Profile

Misc #11681 ยป update-refinements-documentation.patch

lazyatom (James Adam), 11/12/2015 08:14 PM

View differences:

doc/syntax/refinements.rdoc
== Scope
You may only activate refinements at top-level, not inside any class, module
or method scope. You may activate refinements in a string passed to
Kernel#eval that is evaluated at top-level. Refinements are active until the
end of the file or the end of the eval string, respectively.
You may activate refinements at top-level, and inside classes and modules.
You may not activate refinements in method scope. Refinements are activated
until the end of the current class or module definition, or until the end of
the current file if used at the top-level.
Refinements are lexical in scope. When control is transferred outside the
scope the refinement is deactivated. This means that if you require or load a
file or call a method that is defined outside the current scope the refinement
will be deactivated:
You may activate refinements in a string passed to Kernel#eval. Refinements
are active the end of the eval string.
Refinements are lexical in scope. Refinements are only active within a scope
after the call to using. Any code before the using statement will not have the
refinement activated.
When control is transferred outside the scope the refinement is deactivated.
This means that if you require or load a file or call a method that is defined
outside the current scope the refinement will be deactivated:
class C
end
......
end
# activated here
In a class:
# not activated here
class Foo
# not activated here
def foo
# not activated here
end
using M
# activated here
def bar
# activated here
end
# activated here
end
# not activated here
Note that the refinements in M are not activated automatically if the class
Foo is reopened later.
In eval:
# not activated here
......
p [{1=>2}, {3=>4}].to_json # prints "[{\"1\":2},{\"3\":4}]"
You may also activate refinements in a class or module definition, in which
case the refinements are activated from the point where using is called to
the end of the class or module definition:
# not activated here
class Foo
# not activated here
using M
# activated here
def foo
# activated here
end
# activated here
end
# not activated here
Note that the refinements in M are not activated automatically even if the class
Foo is reopened later.
== Method Lookup
    (1-1/1)