2016-11-18 31 views
2

數組初始化的工作方式不同在爲什麼PowerShell的考慮@()語法不同

$scripts = @(
    ("01", "a" , "01_Cleanup") 
    ,("02", "b" , "02_Cleanup") 
); 

輸出:

$scripts[0] - "01" 
$scripts[1] - "a" 
$scripts[2] - "01_Cleanup" 
$scripts[3] - "02" 
"b" 
"02_Cleanup" 

請數組初始化的通知 「」:

$scripts = @(
    ("01", "a" , "01_Cleanup"), 
    ("02", "b" , "02_Cleanup") 
); 

輸出:

$scripts[0] - "01" 
"a" 
"01_Cleanup" 
$scripts[1] - "02" 
"b" 
"02_Cleanup" 

爲什麼?由於不同的使用的

+0

你貼的情況下,錯誤的輸出;)無論如何,我認爲這是因爲一個事實,即沒有跡象顯示將繼續在下一行。所以它將第一個數組視爲單獨的元素。但我也會對更簡潔的答案感興趣。 – 4c74356b41

回答

7

Comma operator二進制 VS 一元):

作爲二進制運算符,逗號創建一個數組。作爲一元運算符, 逗號創建一個包含一個成員的數組。將逗號放在 成員之前。


二進制:

@(
    ("01", "a" , "01_Cleanup"), 
    ("02", "b" , "02_Cleanup") 
) | foreach { Write-Host $_}; 

輸出:

01 a 01_Cleanup 
02 b 02_Cleanup 

一元:

@(
    ("01", "a" , "01_Cleanup") 
    ,("02", "b" , "02_Cleanup") 
) | foreach { Write-Host $_}; 

輸出:

01 
a 
01_Cleanup 
02 b 02_Cleanup 
+0

但爲什麼它在第二種情況下將第一個數組視爲單獨的元素? – 4c74356b41

+0

答案涵蓋了你的問題。 「作爲一元運算符,逗號創建了一個包含一個成員的數組」 –

+1

「,我想我的問題更像是爲什麼這個$ a = @(('a','b'))被視爲2個單獨的元素。我可以創建一個問題,如果你想 – 4c74356b41

相關問題