
下記の画像を見て頂いたほうが早いかと思います。
想定では、左側のソースで、右側の実行結果になる想定をしておりました。
外枠の要素数としては2つの想定です。
多次元配列なので「()」単位で一つの要素想定なのですが、
PowerShell の仕様だと解釈が違うのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
こんばんは。
もう解決済みかとは思いますが、PowerShellの配列の仕様についてちょっとだけ説明させてください。
まず、PowerShellで配列を生成するには@
を使わないArray Literal(配列リテラル)
というものがあります。
これは名前の通りリテラルの配列を記述するための記法です。
この場合、最初の例は以下の様に書くことができ(複数行に分ける場合,は必ず後置しないといけません)、$array.Length=2
となります。
ps1
1# Array Literal Expression 2# 複数行にまたがる場合 , は必ず後置 3$array = ( 4 ("[0][0]", "[0][1]"), 5 ("[1][0]", "[1][1]") 6) 7# これはLength=2のジャグ配列を返す 8Write-Output "array length = $($array.Length)"
そして、@
を使ったArray subexpression operator(配列部分式演算子)
というのもあり、ご質問の例ではこちらを使用しています。
これは@(部分式)
の形式で記述し、部分式を評価した結果を配列として返すという動作をします。
このため最初の例は、以下の様に2つの文として評価され、その結果(文1+文2)を配列にして返しているため$array.Length=3
となります。
ps1
1# Array SubExpression (Operator) 2# @() 部分式(PowerShellでは部分式に"文"も含まれる)が入り、式("文")を評価した結果を配列にする 3$array = @( 4 ("[0][0]", "[0][1]") # 文1 => Length=2の配列を返す 5 ,("[1][0]", "[1][1]") # 文2 => 先頭の,単項演算子により、Length=1のジャグ配列を返す 6) 7# $arrayは文1+文2の結果を配列にするのでLength=3となる 8Write-Output "array length = $($array.Length)"
そして,
については、dupont_kedamaさんもコメントされている通り、これは演算子です。
,
は単項演算子および二項演算子として使うことができ、
- 二項演算子の場合は配列の要素を増やす
- 単項演算子の場合は要素数1の配列にする
といった動作をします。
投稿2016/12/28 11:45
総合スコア796
0
ベストアンサー
PowerShell
1$array = @(("[0][0]", "[0][1]"), ("[1][0]","[1][1]"))
のように1行で書くと$array.Length=2となるようです。
ちなみに
PowerShell
1$array = @("[0][0]","[0][1]") 2$array = @(("[0][0]","[0][1]")) 3$array = ("[0][0]","[0][1]") 4$array = "[0][0]","[0][1]"
上の4行で生成される配列は全て$array.Length=2, $array[0]="[0][0]", $array[1]="[0][1]"となります。
PowerShellの配列では「()」がなくても配列として許容してしまうので、
PowerShell
11> $array = @( 22> ("[0][0]","[0][1]") 33> , ("[1][0]","[1][1]") 44> )
上のように改行をはさむ場合2行目が$array[0], $array[1]と解釈されてしまうのでしょう。
投稿2016/12/28 04:34
総合スコア5572
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

2016/12/28 07:59

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。