Hur och var man använder enumerationer med Golang via C++

Hur man använder Enumerators

Cellers Enumerator

Det finns olika sätt att komma åt Celler Enumerator, och man kan använda någon av dessa metoder baserat på programkraven. Här är metoderna som returnerar cellerna Enumerator.

  1. Cells.GetEnumerator
  2. Row.GetEnumerator
  3. Range.GetEnumerator

Alla ovan nämnda metoder returnerar enumeratorn som tillåter att traversera samlingen av celler som har initierats.

Följande kodexempel visar implementeringen av IEnumerator-gränssnittet för en Cells-samling.

Radenummerator

Enumsator för rader kan nås medan du använder RowCollection.GetEnumerator metoden. Följande kodexempel visar implementeringen av IEnumerator-gränssnittet för RowCollection.

Kolumner Hämtning

Kolumner kan nås medan du använder ColumnCollection.Get metoden. Följande kodexempel visar implementeringen av Get-metoden för ColumnCollection.

Var man ska använda Enumerators

För att diskutera fördelarna med att använda enumerators, låt oss ta ett exempel i realtid.

Scenario

Ett applikationskrav är att traversera alla celler i en given Worksheet för att läsa deras värden. Det kan finnas flera sätt att implementera detta mål. Några demonstreras nedan.

Användning av Display Range

Användning av MaxDataRow & MaxDataColumn

Som du kan observera använder båda ovan nämnda tillvägagångssätten mer eller mindre liknande logik, det vill säga; loopa över alla celler i samlingen för att läsa cellvärdena. Detta kan vara problematiskt av flera skäl som diskuteras nedan.

  1. API:er som GetMaxRow(), GetMaxDataRow(), GetMaxColumn(), GetMaxDataColumn() & GetMaxDisplayRange() kräver extra tid för att samla in motsvarande statistik. Om datamatrisen (rader x kolumner) är stor kan användningen av dessa API:er försena prestandan.
  2. I de flesta fall är inte alla celler i en given omfattning instansierade. I sådana situationer är det inte så effektivt att kontrollera varje cell i matrisen jämfört med att bara kontrollera de initierade cellerna.
  3. Åtkomst av en cell i en loop som Celler rad, kolumn kommer att orsaka att alla cellobjekt i ett område instansieras, vilket så småningom kan orsaka OutOfMemoryException.

Slutsats

Baserat på ovan nämnda fakta är följande möjliga scenarier där enumerators bör användas.

  1. Endast läsåtkomst av cellsamlingen krävs, dvs. kravet är att endast inspektera cellerna.
  2. Ett stort antal celler ska traverseras.
  3. Endast initialiserade celler/rader/kolumner ska traverseras.