NAME¶
UR::Object::Iterator - API for iterating through objects matching a rule
SYNOPSIS¶
my $rule = UR::BoolExpr->resolve('Some::Class', foo => 1);
my $iter = UR::Object::Iterator->create_for_filter_rule($rule);
while (my $obj = $iter->next()) {
print "Got an object: ",$obj->id,"\n";
}
# Equivalent
my $iter2 = Some::Class->create_iterator(foo => 1);
while (my $obj = $iter2->next()) {
print "Got an object: ",$obj->id,"\n";
}
DESCRIPTION¶
get(), implemented in UR::Object, is the usual way for retrieving sets of
objects matching particular properties. When the result set of data is large,
it is often more efficient to use an iterator to access the data instead of
getting it all in one list.
UR::Object implements
create_iterator(), which is just a wrapper around
create_for_filter_rule().
UR::Object::Iterator instances are normal Perl object references, not UR-based
objects. They do not live in the Context's object cache, and obey the normal
Perl rules about scoping.
METHODS¶
- create_for_filter_rule
-
$iter = UR::Object::Iterator->create_for_filter_rule($boolexpr);
Creates an iterator object based on the given BoolExpr (rule). Under the
hood, it calls get_objects_for_class_and_rule() on the current
Context with the $return_closure flag set to true.
- next
-
$obj = $iter->next();
Return the next object matching the iterator's rule. When there are no more
matching objects, it returns undef.
SEE ALSO¶
UR::Object, UR::Context