Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Redakční poznámka
Důležitý
specifikace jazyka Windows PowerShell 3.0 byla publikována v prosinci 2012 a je založená na prostředí Windows PowerShell 3.0. Tato specifikace neodráží aktuální stav PowerShellu. Tato dokumentace se neplánuje aktualizovat tak, aby odrážela aktuální stav. Tato dokumentace je zde uvedena pro historické reference.
Dokument specifikace je k dispozici jako dokument aplikace Microsoft Word z webu Microsoft Download Center na adrese: https://www.microsoft.com/download/details.aspx?id=36389 Dokument aplikace Word byl převeden pro prezentaci zde na webu Microsoft Learn. Během převodu byly provedeny některé redakční změny tak, aby vyhovovaly formátování pro platformu Docs. Některé překlepy a menší chyby byly opraveny.
Syntax:
Spropitné
Zápis ~opt~ v definicích syntaxe označuje, že lexikální entita je v syntaxi nepovinná.
hash-literal-expression:
@{ new-lines~opt~ hash-literal-body~opt~ new-lines~opt~ }
hash-literal-body:
hash-entry
hash-literal-body statement-terminators hash-entry
hash-entry:
key-expression = new-lines~opt~ statement
key-expression:
simple-name
unary-expression
statement-terminator:
;
new-line-character
10.1 Úvod
Typ Hashtable představuje kolekci párů klíč/hodnota objektů, které podporují efektivní vyhledávání hodnoty při indexování klíčem. Každý pár klíč/hodnota je prvek, který je uložen v objektu určitého typu stanoveného implementací.
Klíč elementu nemůže mít hodnotu null. Typ klíče nebo hodnoty nemá žádná omezení. Duplicitní klíče nejsou podporovány.
Vzhledem k objektu páru klíč/hodnota lze klíč a přidruženou hodnotu získat pomocí vlastností instance Klíč a Hodnota.
Pomocí jednoho nebo více klíčů lze k odpovídajícím hodnotám přistupovat prostřednictvím hašovacího operátoru [] (§7.1.4.3).
Všechny hashovací tabulky mají typ Hashtable (§4.3.3).
Pořadí klíčů v kolekci vrácené klíči není zadané; jedná se však o stejné pořadí jako přidružené hodnoty v kolekci vrácené hodnotami.
Tady je několik příkladů zahrnujících hashovací tabulky:
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.FirstName # designates the key FirstName
$h1["LastName"] # designates the associated value for key LastName
$h1.Keys # gets the collection of keys
Hashtable prvky jsou uloženy v objektu typu DictionaryEntrya kolekce vrácené klíči a hodnoty mají typ ICollection.
Vytvoření hashovací tabulky 10.2
Hashtable se vytvoří pomocí hashového literálu (§7.1.9) nebo rutiny New-Object. Dá se vytvořit s nulovými nebo více prvky. Vlastnost Count vrátí aktuální počet prvků.
10.3 Přidání a odebrání prvků hashtable
Prvek lze přidat do Hashtable přiřazením hodnoty (§7.11.1) neexistujícímu názvu klíče nebo indexu (§7.1.4.3), který používá neexistující název klíče. Odebrání prvku vyžaduje použití Metody Remove. Například
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.Dept = "Finance" # adds element Finance
$h1["Salaried"] = $false # adds element Salaried
$h1.Remove("Salaried") # removes element Salaried
10.4 Zřetězení hashovací tabulky
Hashtables lze zřetězit prostřednictvím operátorů + a +=, z nichž oba vedou k vytvoření nového Hashtable. Existující hashovací tabulky se nemění. Další informace najdete v §7.7.4.
10.5 Hašovací tabulky jako referenční typy
Vzhledem k tomu, že Hashtable je referenční typ, přiřazení Hashtable zahrnuje mělkou kopii; to znamená, že přiřazená proměnná odkazuje na stejnou Hashtable; žádná kopie Hashtable není vytvořena. Například
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h2 = $h1
$h1.FirstName = "John" # change key's value in $h1
$h2.FirstName # change is reflected in $h2
10.6 Iterace nad hashovací tabulkou
Ke zpracování každého páru v Hashtablepoužijte vlastnost Klíče, abyste získali seznam klíčů jako pole, a poté procházejte prvky pole, abyste získali přidruženou hodnotu prostřednictvím vlastnosti Value nebo indexu, následujícím způsobem:
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123}
foreach ($e in $h1.Keys) {
"Key is " + $e + ", Value is " + $h1[$e]
}