Update-List

Menambahkan item ke dan menghapus item dari nilai properti yang berisi kumpulan objek.

Sintaks

Update-List
      [-Add <Object[]>]
      [-Remove <Object[]>]
      [-InputObject <PSObject>]
      [[-Property] <String>]
      [<CommonParameters>]
Update-List
      -Replace <Object[]>
      [-InputObject <PSObject>]
      [[-Property] <String>]
      [<CommonParameters>]

Deskripsi

Update-List Cmdlet menambahkan, menghapus, atau mengganti item dalam nilai properti objek dan mengembalikan objek yang diperbarui. Cmdlet ini dirancang untuk properti yang berisi kumpulan objek.

Parameter Tambahkan dan Hapus menambahkan item individual ke dan menghapusnya dari koleksi. Parameter Ganti menggantikan seluruh koleksi.

Jika Anda tidak menentukan properti dalam perintah, Update-List mengembalikan hashtable yang menjelaskan pembaruan alih-alih memperbarui objek. Nantinya, Anda dapat menggunakan set perubahan ini untuk memperbarui objek daftar.

Cmdlet ini hanya berfungsi ketika properti yang sedang diperbarui mendukung antarmuka IList yang Update-List menggunakan. Selain itu, cmdlet apa pun Set yang menerima pembaruan harus mendukung antarmuka IList .

Cmdlet ini diperkenalkan kembali di PowerShell 7.

Contoh

Contoh 1: Menambahkan item ke nilai properti

Dalam contoh ini kita membuat kelas yang mewakili dek kartu tempat kartu disimpan sebagai objek koleksi Daftar . Metode NewDeck() menggunakan Update-Listuntuk menambahkan dek lengkap nilai kartu ke koleksi kartu .

class Cards {

    [System.Collections.Generic.List[string]]$cards
    [string]$name

    Cards([string]$_name) {
        $this.name = $_name
        $this.cards = [System.Collections.Generic.List[string]]::new()
    }

    NewDeck() {
        $_suits = "`u{2663}","`u{2666}","`u{2665}","`u{2660}"
        $_values = 'A',2,3,4,5,6,7,8,9,10,'J','Q','K'
        $_deck = foreach ($s in $_suits){ foreach ($v in $_values){ "$v$s"} }
        $this | Update-List -Property cards -Add $_deck | Out-Null
    }

    Show() {
        Write-Host
        Write-Host $this.name ": " $this.cards[0..12]
        if ($this.cards.count -gt 13) {
            Write-Host (' ' * ($this.name.length+3)) $this.cards[13..25]
        }
        if ($this.cards.count -gt 26) {
            Write-Host (' ' * ($this.name.length+3)) $this.cards[26..38]
        }
        if ($this.cards.count -gt 39) {
            Write-Host (' ' * ($this.name.length+3)) $this.cards[39..51]
        }
    }

    Shuffle() { $this.cards = Get-Random -InputObject $this.cards -Count 52 }

    Sort() { $this.cards.Sort() }
}

Catatan

Update-List Cmdlet menghasilkan objek yang diperbarui ke alur. Kami menyalurkan output untuk Out-Null menekan tampilan yang tidak diinginkan.

Contoh 2: Menambahkan dan menghapus item properti koleksi

Melanjutkan dengan kode dalam Contoh 1, kami akan membuat instans kelas Kartu untuk mewakili dek kartu dan kartu yang dipegang oleh dua pemain. Kami menggunakan Update-List cmdlet untuk menambahkan kartu ke tangan pemain dan untuk menghapus kartu dari dek.

$player1 = [Cards]::new('Player 1')
$player2 = [Cards]::new('Player 2')

$deck = [Cards]::new('Deck')
$deck.NewDeck()
$deck.Shuffle()
$deck.Show()

# Deal two hands
$player1 | Update-List -Property cards -Add $deck.cards[0,2,4,6,8] | Out-Null
$player2 | Update-List -Property cards -Add $deck.cards[1,3,5,7,9] | Out-Null
$deck | Update-List -Property cards -Remove $player1.cards | Out-Null
$deck | Update-List -Property cards -Remove $player2.cards | Out-Null

$player1.Show()
$player2.Show()
$deck.Show()

Deck :  4♦ 7♥ J♦ 5♣ A♣ 8♦ J♣ Q♥ 6♦ 3♦ 9♦ 6♣ 2♣
        K♥ 4♠ 10♥ 8♠ 10♦ 9♠ 6♠ K♦ 7♣ 3♣ Q♣ A♥ Q♠
        3♥ 5♥ 2♦ 5♠ J♥ J♠ 10♣ 4♥ Q♦ 10♠ 4♣ 2♠ 2♥
        6♥ 7♦ A♠ 5♦ 8♣ 9♥ K♠ 7♠ 3♠ 9♣ A♦ K♣ 8♥

Player 1 :  4♦ J♦ A♣ J♣ 6♦

Player 2 :  7♥ 5♣ 8♦ Q♥ 3♦

Deck :  9♦ 6♣ 2♣ K♥ 4♠ 10♥ 8♠ 10♦ 9♠ 6♠ K♦ 7♣ 3♣
        Q♣ A♥ Q♠ 3♥ 5♥ 2♦ 5♠ J♥ J♠ 10♣ 4♥ Q♦ 10♠
        4♣ 2♠ 2♥ 6♥ 7♦ A♠ 5♦ 8♣ 9♥ K♠ 7♠ 3♠ 9♣
        A♦ K♣ 8♥

Output menunjukkan status dek sebelum kartu dibagikan kepada pemain. Anda dapat melihat bahwa setiap pemain menerima lima kartu dari dek. Output akhir menunjukkan status dek setelah memberikan kartu kepada pemain. Update-List digunakan untuk memilih kartu dari dek dan menambahkannya ke koleksi pemain. Kemudian kartu pemain dihapus dari dek menggunakan Update-List.

Contoh 3: Menambahkan dan menghapus item dalam satu perintah

Update-List memungkinkan Anda menggunakan parameter Tambahkan dan Hapus dalam satu perintah. Dalam contoh ini, Pemutar 1 ingin membuang 4♦ dan 6♦ mendapatkan dua kartu baru.

# Player 1 wants two new cards - remove 2 cards & add 2 cards
$player1 | Update-List -Property cards -Remove $player1.cards[0,4] -Add $deck.cards[0..1] | Out-Null
$player1.Show()

# remove dealt cards from deck
$deck | Update-List -Property cards -Remove $deck.cards[0..1] | Out-Null
$deck.Show()

Player 1 :  J♦ A♣ J♣ 9♦ 6♣

Deck :  2♣ K♥ 4♠ 10♥ 8♠ 10♦ 9♠ 6♠ K♦ 7♣ 3♣ Q♣ A♥
        Q♠ 3♥ 5♥ 2♦ 5♠ J♥ J♠ 10♣ 4♥ Q♦ 10♠ 4♣ 2♠
        2♥ 6♥ 7♦ A♠ 5♦ 8♣ 9♥ K♠ 7♠ 3♠ 9♣ A♦ K♣
        8♥

Contoh 4: Menerapkan perubahan yang diatur ke objek daftar

Jika Anda tidak menentukan properti, Update-List mengembalikan hashtable yang menjelaskan pembaruan alih-alih memperbarui objek. Anda dapat mentransmisikan hashtable ke objek System.PSListModifier dan menggunakan ApplyTo() metode untuk menerapkan perubahan yang diatur ke daftar.

$list = [System.Collections.ArrayList] (1, 43, 2)
$changeInstructions = Update-List -Remove 43 -Add 42
$changeInstructions

Name                           Value
----                           -----
Add                            {42}
Remove                         {43}

([PSListModifier]($changeInstructions)).ApplyTo($list)
$list

1
2
42

Parameter

-Add

Menentukan nilai properti yang akan ditambahkan ke koleksi. Masukkan nilai dalam urutan yang akan muncul dalam koleksi.

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Menentukan objek yang akan diperbarui. Anda juga dapat menyalurkan objek yang akan diperbarui ke Update-List.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Property

Menentukan properti yang berisi koleksi yang sedang diperbarui. Jika Anda menghilangkan parameter ini, Update-List mengembalikan objek yang mewakili perubahan alih-alih mengubah objek.

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Remove

Menentukan nilai properti yang akan dihapus dari koleksi.

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Replace

Menentukan koleksi baru. Parameter ini menggantikan semua item dalam koleksi asli dengan item yang ditentukan oleh parameter ini.

Type:Object[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Input

PSObject

Anda dapat menyalurkan objek yang akan diperbarui ke cmdlet ini.

Output

Hashtable

Secara default, cmdlet ini mengembalikan hashtable yang menjelaskan pembaruan.

Object

Saat Anda menentukan parameter Properti , cmdlet ini mengembalikan objek yang diperbarui.