2012-08-30 59 views
6

我熟悉基本range operator省略號在PowerShell中做什麼?

.. Range operator 
Represents the sequential integers in an integer array, given an upper and lower boundary. 
    1..10 
    10..1 
    foreach ($a in 1..$max) {write-host $a} 

不過,我無意中用省略號(...),而不是運營商的範圍今日(..),並發現它從N個枚舉下降到0出於某種原因:

PS C:\> 5...3 
5 
4 
3 
2 
1 
0 

發生了什麼事?

回答

12

範圍運算符仍在使用 - 事實證明,範圍運算符的第二個輸入(在本例中爲.3)隱式轉換爲整數,因爲範圍運算符只接受整數作爲輸入。

這可以通過使用比.5更高右側值進行驗證:

PS C:\> 5...6 
5 
4 
3 
2 
1 

這是很容易看到當你使用一個明顯的非整數值作爲右側值範圍運營商:

PS C:\> 5..'3' 
5 
4 
3 
+0

不錯的答案:) powershell繼續驚歎,呃? ;) – manojlds