スカラー比較(PowerShell 入門)

この記事は以前 http://blog.hiros-dot.net/ に書いたものです。

今回は比較演算子でちょっとした実験を行ってみたいと思います。

比較演算子の説明は「比較演算子(PowerShell 入門)」を参照願います。

下記のように数値の2と2を-eq演算子で比較した場合、当然これは等しいのでTrueが返されます。

PS > 2 -eq 2
True

では、次のように数値の2と文字列"2"を比較したらどうなるでしょうか?

PS > 2 -eq "2"

この結果はTrueとなります。

ではなぜTrueとなるのでしょうか?

これはPowerShellがスカラー比較を行うためです。(スカラー比較とは2も"2"も同一視すること)

では、下記のようにキャストして比較してみたらどうなるか

PS %gt; [int]2 -eq [string]"2"
True

これも結果としては同じ値と見なされてしまい、Trueを返します。

下記のように数値型と文字列型(GetType()メソッドは型を返します)の比較はスカラー比較は適用できないため、Falseが返されます。

PS > (2).GetType() -eq "2".GetType()
False

コメント

タイトルとURLをコピーしました