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
cmdlet Update-List
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
gunakan. Selain itu, setiap cmdlet 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 kumpulan Daftar. Metode NewDeck() menggunakan Update-List
untuk 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() }
}
Nota
cmdlet Update-List
menghasilkan objek yang diperbarui ke alur. Kami menyalurkan output ke Out-Null
untuk menekan tampilan yang tidak diinginkan.
Contoh 2: Menambahkan dan menghapus item properti koleksi
Melanjutkan dengan kode dalam Contoh 1, kami akan membuat instans kartu kelas untuk mewakili dek kartu dan kartu yang dipegang oleh dua pemain. Kami menggunakan cmdlet Update-List
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♦
dan 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 metode ApplyTo()
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.
Jenis: | Object[] |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-InputObject
Menentukan objek yang akan diperbarui. Anda juga dapat menyalurkan objek yang akan diperbarui ke Update-List
.
Jenis: | PSObject |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | True |
Terima karakter wildcard: | 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.
Jenis: | String |
Position: | 0 |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Remove
Menentukan nilai properti yang akan dihapus dari koleksi.
Jenis: | Object[] |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Replace
Menentukan koleksi baru. Parameter ini menggantikan semua item dalam koleksi asli dengan item yang ditentukan oleh parameter ini.
Jenis: | Object[] |
Position: | Named |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
Anda dapat menyalurkan objek yang akan diperbarui ke cmdlet ini.
Output
Secara default, cmdlet ini mengembalikan hashtable yang menjelaskan pembaruan.
Saat Anda menentukan parameter Properti, cmdlet ini mengembalikan objek yang diperbarui.