Aracılığıyla paylaş


10. Karma Tablosu

Editörün notu

Önemli

Windows PowerShell Dil Belirtimi 3.0 Aralık 2012'de yayımlanmıştır ve Windows PowerShell 3.0'ı temel alır. Bu belirtim PowerShell'in geçerli durumunu yansıtmaz. Bu belgeleri geçerli durumu yansıtacak şekilde güncelleştirme planı yoktur. Bu belgeler, geçmişe yönelik başvuru için burada sunulmuştur.

Belirtim belgesi, Şu konumdaki Microsoft İndirme Merkezi'nden bir Microsoft Word belgesi olarak kullanılabilir: https://www.microsoft.com/download/details.aspx?id=36389 Bu Word belgesi burada Microsoft Learn'de sunu için dönüştürülmüştür. Dönüştürme sırasında, Docs platformu için biçimlendirmeye uyum sağlamak için bazı editoryal değişiklikler yapılmıştır. Bazı yazım hataları ve küçük hatalar düzeltildi.

Sözdizimi:

Bahşiş

Söz dizimi tanımlarındaki ~opt~ gösterimi söz diziminde sözcüksel varlığın isteğe bağlı olduğunu gösterir.

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 Giriş

Hashtable türü, anahtar tarafından dizine bir değerin verimli alınmasını destekleyen nesnelerden oluşan bir anahtar/değer çifti koleksiyonunu temsil eder. Her anahtar/değer çifti, uygulama tanımlı nesne türlerinde depolananbir öğesidir.

Öğenin anahtarı null değer olamaz. Anahtar veya değer türüyle ilgili herhangi bir kısıtlama yoktur. Yinelenen anahtarlar desteklenmez.

Anahtar/değer çifti nesnesi verildiğinde anahtar ve ilişkili değer sırasıyla Anahtar ve Değer örnek özellikleri kullanılarak elde edilebilir.

Bir veya daha fazla anahtar verildiğinde, karşılık gelen değerlere Hashtable alt indis işleci [] (§7.1.4.3) üzerinden erişilebilir.

Tüm Hashtable'ların türü Hashtable (§4.3.3).

Anahtarlar tarafından döndürülen koleksiyondaki anahtarların sırası belirtilmemiştir; ancak, Değerler tarafından döndürülen koleksiyondaki ilişkili değerlerle aynı sıradadır.

Hashtable'larla ilgili bazı örnekler aşağıda verilmiştir:

$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 öğeleri DictionaryEntrytüründe bir nesnede depolanır ve Anahtarlar ve Değerler tarafından döndürülen koleksiyonlar ICollection türüne sahiptir.

10.2 Hashtable oluşturma

Hashtable bir karma değişmez değeri (§7.1.9) veya New-Object cmdlet'i aracılığıyla oluşturulur. Sıfır veya daha fazla öğeyle oluşturulabilir. Count özelliği geçerli öğe sayısını döndürür.

10.3 Hashtable öğelerini ekleme ve kaldırma

Hashtable'a, var olmayan bir anahtar adına veya var olmayan bir anahtar adı kullanan bir alt simgeye (§7.1.4.3) bir değer atanarak (§7.11.1) bir öğe eklenebilir. Bir öğenin kaldırılması için Remove yönteminin kullanılması gerekir. Mesela

$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 Hashtablo birleştirme

Karma tablolar, + ve += işleçleri aracılığıyla birleştirilebilir, bu işleçler her ikisi de yeni bir Hashtableoluşturur. Mevcut Hashtable'lar değiştirilmez. Daha fazla bilgi için bkz. §7.7.4 .

10.5 Başvuru Türleri Olarak Karma Tablolar

Hashtable bir başvuru türü olduğundan, Hashtable ataması basit bir kopyasını içerir; yani, atanan değişken, aynı Hashtable'ye başvurur; Hashtable kopyası yapılmaz. Mesela

$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 Hashtable üzerinde listeleme

bir Hashtableiçindeki her çifti işlemek için Anahtarları özelliğini kullanarak anahtarların listesini bir dizi olarak alın ve ardından Value özelliği veya alt indis aracılığıyla ilişkili değeri alan dizinin öğelerine aşağıda gösterildiği gibi numaralandırın

$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123}
foreach ($e in $h1.Keys) {
   "Key is " + $e + ", Value is " + $h1[$e]
}