2012-02-05 6 views
3

私はより良くしたいPowerShellの範囲演算子で何が起こっているのかを理解してください。

$ myarrayの= 1..10 ので、我々は

10は、今、私が使用する-1配列の最後の値を取得したい1 2 3 4と$ myarrayの...持っていると示して1から10まで逆に、私はそうする

$ myArray [( - 1).. 0]しかし、これは10 1(これらの2つの値のみ、その間に何もない)をもたらす。

しかし、私は$ myarrayの行う場合は[.. $ myarrayの[-1]を0]これはすべての値が10 9 8を期待得られます... 1

は、誰もがこれについての説明を与えることができますか?私は(-1)が[]の中にあると最後の要素または値10に評価されると思うでしょうが、その範囲は10..0としてキックされますが、範囲がスキップされ、リストされた2つの値。これはPowerShellを習得するための練習ですが、私はこの後の特別なアプリケーションはありません。 Btw、私は()を除いて-1を実行した場合に限り、同じ10 1を得る。

おかげで、 ジェイソン

答えて

2

がのが何-1..0戻って見てみましょう非常に簡単です:

-1 
0 

だから、$ myarrayのは[-1..0] $ myarrayのと等価です[ -1、0]となる。

しかし、10..0の式は範囲全体を逆に返します。したがって、$myArray[$myArray[-1]..0]式は期待通りに機能します。

+0

したがって、範囲は-1..0です。これは本質的に2つの要素で、-1が配列の最後の要素に変換されているので、なぜ10 1になりますか?したがって、-1..0の範囲を指定すると、最初に-1が表示されますが、完全な$ myArray [$ myArray [-1] .. 0]を実行すると、変数が最初にeval'edされ、次に範囲演算子が起動します10を見て?キーは表現の一種であり、どのように評価されるのでしょうか?説明ありがとう。 Jason – user1190989

+0

get-help about_operator_precedenceを参照してください。配列のインデックス操作は、範囲操作の前に評価されます。 – mjolinor

関連する問題