2017-12-14 6 views
0

PowerShellのロジック質問にPowerShellの変数を設定するには:これがtrueと評価する理由どうTrueまたはFalse

$a = 1 
$b = 2 
if ($a = $b) { 
    $ans = $true 
} 
else { 
    $ans = $false 
} 
Write-Host $ans 


Output: 
True 

誰かが私に説明できますか?それは私が本当に最初に$ ansを割り当てるからですか?また、誰かがこれを私がそれがすべきと考える方法を評価する方法を教えてもらえますか?

+0

'$ ans =($ a -eq $ b)'を使用して 'if'を省略することができます – JosefZ

答えて

6

$a = $bという割り当てを行っていると、割り当てが成功し、bが真であるためtrueを返します。そのため、最初のケースは常に現時点でtrueと評価されます。代わりに比較:$a -eq $bが使用されます。

More detailed information on comparisons in powershell

+2

' == 'の' == 'に相当する' == '表記は、' $ a-eq $ b) - と($ a -is $ b) 'となります。 '-is'は型比較演算子です。 – jessehouwing

+1

両方の説明をありがとうございます。良い一日を過ごしてください。 – Ben

+0

実際、 '$ a = $ b'の割り当て**は_true_を返すのではなく、' $ b'を返します。例えば、 'if($ a = 0){...} else {...}'はある種の自動型変換のために 'else'ブランチに到達します。有効な構文 '$ var1 = $ var2 = 'ここに任意の型の値があることに注意してください。 – JosefZ

関連する問題