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

Lihat juga