A ForEach() metódus

A ForEach() az egyszerűbb, nézzünk rá néhány példát! Elsőként a ForEach-Object cmdlettel megegyező felhasználási területre:

PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach({$_*2})

ablakablak

babababa

cicacica

zsiráfzsiráf

Látható, hogy a ForEach() metódusnak átadott szkriptblokk minden elemre lefut, és a $_ behelyettesítődik az egyes elemekkel.

Megjegyzés

Érdekes módon, a gömbölyű zárójel itt elhagyható, azaz ez is tökéletesen működik:

PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach{$_*2}

ablakablak

babababa

cicacica

zsiráfzsiráf

Bár én személy szerint inkább használom a gömbölyű zárójeles hagyományos szintaxist.

A szkriptblokk lehet olyan is, amelyik paramétereket fogad. Ilyenkor a paraméterek értékeit a ForEach() további paramétereiként kell átadni, mint ahogy az alábbi hibajelzés utal rá:

PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach()

Cannot find an overload for ".ForEach(expression [, arguments...])" and the ar

gument count: "0".

At line:1 char:1

+ ("ablak", "baba", "cica", "zsiráf").foreach()

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : NotSpecified: (:) [], MethodException

    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

Az alábbiakban a szkriptblokk egy $x paramétert vár, és ennek 3-at adok át:

PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach({param($x)$_*$x}, 3)

ablakablakablak

babababababa

cicacicacica

zsiráfzsiráfzsiráf

De a ForEach() metódus másra is felhasználható! Például a gyűjtemény elemeinek típuskonverziójára:

PS C:\> (1.1,2.1,3.1,4.1).ForEach([int])

1

2

3

4

A fenti példában a lebegőpontos számokat alakította egésszé. Érdekes módon a szövegek karaktertömbbé alakítása nem megy ezzel a módszerrel:

PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach([char[]])

Cannot convert value "System.Collections.ArrayList" to type "System.Char[]". E

rror: "Cannot convert value "ablak" to type "System.Char". Error: "String must

 be exactly one character long.""

At line:1 char:1

+ ("ablak", "baba", "cica", "zsiráf").foreach([char[]])

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : InvalidArgument: (:) [], RuntimeException

    + FullyQualifiedErrorId : InvalidCastExceptionEnumerableToArray

Következő lehetőség a tulajdonságok elérése:

PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach("length")

5

4

4

6

Az utolsó pedig a metódusok meghívása:

PS C:\> ("ablak", "baba", "cica", "zsiráf").foreach("toupper")

ABLAK

BABA

CICA

ZSIRÁF



Word To HTML Converter