Operator For (Iteration)
Declares or defines operators used by a `For...Next` loop with user defined type variables
Syntax
`
{ Type | Class | Union } typename
Declare Operator For ()
Declare Operator For ( [ ByRef | ByVal ] stp As typename )
...
End { Type | Class | Union }
`
Usage
`
For iterator [ As typename ] = start_value To end_value [ Step step_value ]
[ ...statements... ]
Next
`
Parameters
`typename`
name of the `Type`, `Class`, or `Union`
`stp`, `step_value`
a `typename` object used as an incremental value
`iterator`
a `typename` object used as an iterator
`end_value`
a `typename` object used as a loop-terminating value
`start_value`
a `typename` object used to copy construct or assign to the iterator initially
Description
`Operator For`, `Operator Next` and `Operator Step` can be overloaded in user-defined type definitions to allow objects of that type to be used as iterators and step values in `For...Next` loops.
As all non-static member procedures, they have passed a hidden `This` parameter that allows to access by reference to the iterator object in the code body of the 3 operators.
`Operator For` is called immediately after copy constructing or assigning to the iterator object, and allows the object to perform any additional initialization needed in preparation for the loop.
The first version of `Operator For` is used if no step value is given in the `For...Next` statement. If a step value is given, the second version is used and is passed the step value because eventual additional initialization may use it.
Example
See the Operator Step examples.
Dialect Differences

- Only available in the -lang fb dialect.

See also

- `Operator Next`
- `Operator Step`
- `For...Next`