Jump to content

Splatting: Hashtable direkt beim Aufruf der Funktion definieren u. übergeben


Direkt zur Lösung Gelöst von cj_berlin,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Communtiy.

 

Gerade bin ich über das Splatting gestolpert und finde es feine Sache, um die PS-Skripte lesbarer zu machen.

 

Wie muss der Ausdruck aussehen, wenn ich das Hashtable direkt beim Aufruf der Funktion/des Commandlets definiere und übergeben möchte? Bisher habe ich dazu nichts im Netz gefunden und Ich habe auch schon die unterschiedlichsten Sachen ausprobiert.

 

# My Splatting tries
# ------------------

function MyFunc
{
    param
    (
        [String]$paramOne,
        [String]$paramTwo,
        [String]$paramThree,
        [String]$paramFour
    )

    Write-host
    Write-Host '--- In MyFunc ----'
    Write-Host "This is $paramOne"
    Write-Host "This is $paramTwo"
    Write-Host "This is $paramThree"
    Write-Host "This is $paramFour"
}

$SplattedParams = @{
    paramOne   = 'One.';
    paramTwo   = 'Two.';
    paramThree = 'Three.';
    paramFour  = 'Four.'
}

MyFunc @SplattedParams

@{
    paramOne   = 'One.';
    paramTwo   = 'Two.';
    paramThree = 'Three.';
    paramFour  = 'Four.'
} | ForEach-Object { MyFunc @_ }

# NOT working!!!
MyFunc @${
    paramOne   = 'One.';
    paramTwo   = 'Two.';
    paramThree = 'Three.';
    paramFour  = 'Four.'
} 

 

Danke für die Hilfe.

 

Link zu diesem Kommentar

Da es beim Splatting darum geht, den Code leichter lesbar zu machen, wenn man einer Funktion sehr viele Parameter übergeben möchte, macht meiner Meinung nach nur die Form in Deinem ersten Beispiel Sinn.

 

Schon Dein zweites Beispiel finde ich nicht einfacher zu lesen.

 

Übrigens kannst Du in der Hashtable die abschließenden Semikola am Zeilenende weglassen. Das macht es meiner Meinung nach noch besser lesbar.

 

Ich empfehle immer noch gern diese Lektüre hier:

 

The Unofficial PowerShell Best Practices and Style Guide    

Link zu diesem Kommentar
vor 20 Stunden schrieb BOfH_666:

Schon Dein zweites Beispiel finde ich nicht einfacher zu lesen.

Mein zweites Beispiel hatte ich auch unvorteilhaft formatiert. Da ging es mir nur darum, das Hashtable an die Funktion weiterzuleiten. Vielleicht ist es ja so bisser lesbar.

# My Splatting tries
# ------------------

function MyFunc
{
    param
    (
        [String]$paramOne,
        [String]$paramTwo,
        [String]$paramThree,
        [String]$paramFour
    )

    Write-host
    Write-Host '--- In MyFunc ----'
    Write-Host "This is $paramOne"
    Write-Host "This is $paramTwo"
    Write-Host "This is $paramThree"
    Write-Host "This is $paramFour"
}

@{
    paramOne   = 'This is paramter One.'
    paramTwo   = 'This is paramter Two.'
    paramThree = 'This is paramter Three.'
    paramFour  = 'This is paramter Four.'
} | ForEach-Object { 
        MyFunc @_ 
    }

 

vor 20 Stunden schrieb BOfH_666:

Ich empfehle immer noch gern diese Lektüre hier:

 

The Unofficial PowerShell Best Practices and Style Guide    

Vielen Dank für die Lektüre. Die habe ich mir gleich zu Gemüte geführt. Da ich der Einzige in unserem zehn Mannteam ist, der Windows PowerShell halbwegs beherrsche, könnte ich gleich Standards für die Skripterstellung im Team definieren. 

Link zu diesem Kommentar
Am 22.6.2022 um 12:19 schrieb ineedhelp:
$SplattedParams = @{
    paramOne   = 'One.';
    paramTwo   = 'Two.';
    paramThree = 'Three.';
    paramFour  = 'Four.'
}

MyFunc @SplattedParams

 

Was spricht aus Deiner Sicht denn gegen diese Variante? Das ist die lesbarste, und es dürfte auch die meistverwendete sein. Bis auf die ';' hinten, die lassen Menschen, die nicht aus C# kommen, eher weg :-)

Link zu diesem Kommentar
vor 16 Stunden schrieb daabm:

Was spricht aus Deiner Sicht denn gegen diese Variante? Das ist die lesbarste, und es dürfte auch die meistverwendete sein.

Ich wollte die Deklarierung der Variable/des Hashtables vermeiden, weil ich diese nur einmal beim Aufruf der Funktion/des Cmdlets benötige. Ich denke auch, dass das erste Beispiel das meistverwendete ist und werde die Splatting-Technik so nutzen, wie sie allemein ist.  

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...