Sobes.tech
Junior — Middle

Kas saaksite selgitada, mis on iteratsiooni disainimuster ja kuidas seda rakendada?

sobes.tech AI

Vastus AI-lt

Disainimuster Iterator on mõeldud järjestikuseks elementide läbimiseks kogumis ilma selle sisemise struktuuri avaldamata.

Peamine idee:

  • Iterator pakub liidest, mis võimaldab juurdepääsu kogumi elementidele üks korraga.
  • See võimaldab kliendikoodil läbida elemente teadmata, kuidas kogum sisemiselt organiseeritud on.

C#-s implementeeritakse iterator kasutades IEnumerator ja IEnumerable liideseid. Tavaliselt kasutatakse märksõna yield, mis lihtsustab iteratoride loomist.

Näide C#-s:

using System;
using System.Collections;
using System.Collections.Generic;

class MyCollection : IEnumerable<int>
{
    private int[] data = {1, 2, 3, 4, 5};

    public IEnumerator<int> GetEnumerator()
    {
        foreach (var item in data)
        {
            yield return item; // tagastab elemendid üks korraga
        }
    }

    IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}

class Program
{
    static void Main()
    {
        var collection = new MyCollection();
        foreach (var item in collection)
        {
            Console.WriteLine(item);
        }
    }
}

Siin MyCollection implementeerib IEnumerable<int>, võimaldades kasutada foreach elementide läbimiseks. Iterator varjab andmete salvestamise detaile ning pakub lihtsat viisi nende läbimiseks.