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.