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-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() }
}
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
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.
Link Terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk