ITERATORS

One of the benefits of collection classes is that they allow you to use a For Each loop to iterate through the items they contain. Visual Basic lets you write your own iterator function to provide access to items in a group. Then other code can loop over those items by using a For Each loop.

To make an iterator, create a function that uses the keyword Iterator before its Function keyword. Then make the function return the type IEnumerable or a generic version of IEnumerable such as IEnumerable(Of String). Finally, inside the function, use the Yield statement to return a value in the enumeration.

For example, the following function enumerates a list of prime numbers:

Private Iterator Function Primes(
  start_number As Integer, end_number As Integer) As IEnumerable(Of Integer)
    ' Define an inline function that returns True if a number is prime.
    Dim is_prime = Function(i)
            If i = 1 Then Return False        ' 1 is not prime.
            If i = 2 Then Return True         ' 2 is prime.
            If i Mod 2 = 0 Then Return False  ' Other even numbers are not prime.
            For test As Integer = 3 To Math.Sqr(i) Step 2
                If i Mod test = 0 Then Return False
            Next test
            Return True
        End Function
 
    For i As Integer = start_number To end_number
        ' If this number is prime, enumerate it.
        If is_prime(i) Then Yield i
    Next i
End Function

The following code shows how a program might use the Primes iterator:

For Each prime As Integer In Primes(1, 1000)
    Debug.WriteLine(prime)
Next prime
Debug.WriteLine("# Primes: " & Primes(1, 1000).Count)
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.173.78