about_Booleans
Kısa açıklama
Boole ifadelerinin nasıl değerlendirildiği açıklanır.
Uzun açıklama
PowerShell herhangi bir türü örtük olarak Boole olarak değerlendirebilir. PowerShell'in diğer türleri Boole değerlerine dönüştürmek için kullandığı kuralları anlamak önemlidir.
Skaler türlerden dönüştürme
Skaler tür, aynı anda yalnızca bir değeri tutabilen atomik bir miktardır. Aşağıdaki türler olarak $false
değerlendirilir:
- veya gibi
''
boş dizeler""
- Gibi null değerler
$null
- değeri olan herhangi bir sayısal tür
0
Örnekler:
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şağıdaki türler olarak $true
değerlendirilir:
- Boş olmayan dizeler
- Koleksiyon olmayan başka bir türün örnekleri
Örnekler:
# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True
Bunun açık dize ayrıştırmadan farklı olduğunu unutmayın:
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."
Koleksiyon türlerinden dönüştürme
Diziler PowerShell'deki en yaygın koleksiyon türüdür. Bu kurallar, IList arabirimini uygulayan koleksiyon benzeri türler için geçerlidir.
- Boş koleksiyonlar her zaman
$false
- Bir komuttan
[System.Management.Automation.Internal.AutomationNull]::Value
çıktının bulunmadığını gösteren özel null değer her zaman$false
olur. - Tek öğeli koleksiyonlar, tek ve tek öğelerinin Boole değerini değerlendirir.
- 1'den fazla öğeye sahip koleksiyonlar her zaman
$true
olur.
Örnekler:
# 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
Ayrıca bkz.
PowerShell