2016-07-31 6 views
5

理論上の問題 - 初期化中にハッシュテーブルを参照する方法。例えば、既に述べられている他のメンバに基づいてメンバを計算する。PowerShell HashTable - 初期化中の自己参照

Remove-Variable myHashTable -ErrorAction Ignore 
$myHashTable = 
@{ 
    One = 1 
    Two= 2 
    Three = ??? # following expressions do not work 
     # $This.One + $This.Two or 
     # $_.One + $_.Two 
     # $myHashTable.One + $myHashTable.Two 
     # ???? 
} 

$myHashTable.Three -eq 3 # make this $true 

どのようにすればいいですか?それは実際に可能ですか?

編集:これは私が怖いオブジェクト初期化子の構文を使用して行うことはできません

$myHashTable = 
@{ 
    One = 1 
    Two= 2 
} 
$myHashTable.Three = $myHashTable.One + $myHashTable.Two 

答えて

5

: これが私の解決策でした。変数を使用することは可能ですが、オブジェクトを作成する前に値を計算する必要があります。

+0

この回答は先に迫ってくる:-(。 – Honzajscz

1

私はこれをお勧めすることはできませんが、2回以上初期化子を繰り返すことができます。

(0..1) | %{ 
    $a = @{ 
     One = 1 
     Two = $a.One + 1 
    } 
} 

(0..2) | %{ 
    $b = @{ 
     One = 1 
     Two = $b.One + 1 
     Three = $b.Two + 1 
    } 
} 

は、すなわち、反復回数に依存しない、すべての計算は冪等であることを確認してください。

+0

面白い解決策 - ちょっと変わったが元々:-) – Honzajscz