Megosztás a következőn keresztül:


Booleans-ról

Rövid leírás

A logikai kifejezések kiértékelésének módját ismerteti.

Hosszú leírás

A PowerShell implicit módon bármilyen típust képes logikaiként kezelni. Fontos megérteni azokat a szabályokat, amelyeket a PowerShell más típusok logikai értékekké alakítására használ.

Konvertálás skaláris típusokból

A skaláris olyan atommennyiség, amely egyszerre csak egy értéket tartalmazhat. A következő típusok kiértékelése $false:

  • Üres sztringek, például '' vagy ""
  • Null értékek, például $null
  • Bármilyen numerikus típus 0 értékkel

Példák:

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

A következő típusok kiértékelése $true:

  • Nem üres sztringek
  • Egyéb nem gyűjtemény típusú példányok

Példák:

# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True

Vegye figyelembe, hogy ez eltér explicit sztring elemzési:

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."

Átalakítás gyűjteménytípusokból

A tömbök a PowerShell leggyakoribb gyűjteménytípusai. Ezek a szabályok az IList felületet implementáló gyűjteményszerű típusokra vonatkoznak.

  • Az üres gyűjtemények mindig $false
  • A parancs kimenetének hiányát jelző speciális null érték, [System.Management.Automation.Internal.AutomationNull]::Value mindig $false.
  • Az egyelemes gyűjtemények kiértékelése egyetlen elem logikai értékére vonatkozik.
  • Az 1-nél több elemből álló gyűjtemények mindig $true.

Példák:

# 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

Lásd még