ForComprehensionClause.ceylon
"""A ‘`for`’ comprehension clause, also known as a quantifier clause.
A ‘`for`’ comprehension clause consists of the keyword ‘`for`’,
an [[iterator]] and a following [[clause]].
Examples:
for (person in people) "``person.firstName`` ``person.lastName``"
for (people in peoples) for (person in people) if (person.age >= 18) person"""
shared class ForComprehensionClause(iterator, clause)
extends InitialComprehensionClause() {
"The iterator of the comprehension clause."
shared ForIterator iterator;
"The following / next / inner comprehension clause."
shared actual ComprehensionClause clause;
shared actual [ForIterator, ComprehensionClause] children = [iterator, clause];
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformForComprehensionClause(this);
shared actual void visit(Visitor visitor)
=> visitor.visitForComprehensionClause(this);
shared actual Boolean equals(Object that) {
if (is ForComprehensionClause that) {
return iterator == that.iterator && clause == that.clause;
} else {
return false;
}
}
shared actual Integer hash
=> 31 * (iterator.hash + 31 * clause.hash);
shared ForComprehensionClause copy(ForIterator iterator = this.iterator, ComprehensionClause clause = this.clause) {
value ret = ForComprehensionClause(iterator, clause);
copyExtraInfoTo(ret);
return ret;
}
}