about_Booleans
Deskripsi singkat
Menjelaskan bagaimana ekspresi boolean dievaluasi.
Deskripsi panjang
PowerShell dapat secara implisit memperlakukan jenis apa pun sebagai Boolean. Penting untuk memahami aturan yang digunakan PowerShell untuk mengonversi jenis lain ke nilai Boolean .
Mengonversi dari jenis skalar
Jenis skalar adalah kuantitas atom yang hanya dapat menampung satu nilai pada satu waktu. Jenis berikut mengevaluasi ke $false
:
- String kosong seperti
''
atau""
- Nilai null seperti
$null
- Jenis numerik apa pun dengan nilai
0
Contoh:
PS> $false -eq ''
True
PS> if ("") { $true } else { $false }
False
PS> if ($null) { $true } else { $false }
False
PS> if ([int]0) { $true } else { $false }
False
PS> if ([double]0.0) { $true } else { $false }
False
Jenis berikut mengevaluasi ke $true
:
- Untai (karakter) tidak kosong
- Instans jenis non-koleksi lainnya
Contoh:
# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True
Perhatikan bahwa ini berbeda dari penguraian string eksplisit:
PS> [bool]::Parse('false')
False
PS> [bool]::Parse('True')
True
PS> [bool]::Parse('Not True')
MethodInvocationException: Exception calling "Parse" with "1" argument(s):
"String 'Not True' was not recognized as a valid Boolean."
Mengonversi dari jenis koleksi
Array adalah jenis koleksi yang paling umum di PowerShell. Aturan ini berlaku untuk jenis seperti koleksi apa pun yang mengimplementasikan antarmuka IList .
- Koleksi kosong selalu
$false
- Nilai null khusus yang menunjukkan tidak adanya output dari perintah,
[System.Management.Automation.Internal.AutomationNull]::Value
selalu$false
. - Koleksi elemen tunggal mengevaluasi ke nilai Boolean dari satu dan satu-satunya elemennya.
- Koleksi dengan lebih dari 1 elemen selalu
$true
.
Contoh:
# Empty collections
PS> [bool]@()
False
PS> [bool](Get-ChildItem | Where-Object Name -eq 'Non-existent-File.txt')
False
# Single-element collections
PS> $a = @(0)
PS> [bool]$a
False
PS> $b = @(1)
PS> [bool]$b
True
# Multi-element collections
PS> $c = @(0,0)
PS> [bool]$c
True