[DOC] Clarify Class#subclases behavior quirks

As per discussion in [Feature #18273], explain the
non-deterministic nature of the method.
This commit is contained in:
zverok 2022-01-25 00:31:12 +02:00 коммит произвёл Victor Shepelev
Родитель 73eddee76e
Коммит f07897fd7b
1 изменённых файлов: 21 добавлений и 0 удалений

21
class.c
Просмотреть файл

@ -1572,6 +1572,27 @@ class_descendants(VALUE klass, bool immediate_only)
* A.subclasses #=> [D, B]
* B.subclasses #=> [C]
* C.subclasses #=> []
*
* Anonymous subclasses (not associated with a constant) are
* returned, too:
*
* c = Class.new(A)
* A.subclasses # => [#<Class:0x00007f003c77bd78>, D, B]
*
* Note that the parent does not hold references to subclasses
* and doesn't prevent them from being garbage collected. This
* means that the subclass might disappear when all references
* to it are dropped:
*
* # drop the reference to subclass, it can be garbage-collected now
* c = nil
*
* A.subclasses
* # It can be
* # => [#<Class:0x00007f003c77bd78>, D, B]
* # ...or just
* # => [D, B]
* # ...depending on whether garbage collector was run
*/
VALUE