about_Booleans

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 menyimpan satu nilai pada satu waktu. Jenis berikut mengevaluasi ke $false:

  • String kosong seperti '' atau ""
  • Nilai kosong 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:

  • String 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-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