哈希表:使用前一个属性生成下一个属性

问题描述 投票:0回答:1

有没有办法生成一个哈希表,使用哈希表中刚刚定义的属性来创建下一个属性?我知道我可以逐行进行操作,但我想保留当前的格式,因为我喜欢它的阅读方式。

$RequestedSpace = @{}
$RequestedSpace.Clear()
$RequestedSpace = @{
    Gb = (Read-Host "How much space (in Gb) would you like left over?")
    b = $RequestedSpace.Gb * 1Gb
};
$RequestedSpace.Gb
$RequestedSpace.b

上述结果导致 $RequestedSpace.b 为空值

下面的方法有效,但在我看来明显丑陋

$RequestedSpace = @{}
$RequestedSpace.Clear()
$RequestedSpace.Gb = Read-Host "How much space (in Gb) would you like left over?"
$RequestedSpace.b = [bigint]$RequestedSpace.Gb * 1gb
powershell hashtable
1个回答
0
投票

您可以利用以下事实:

  • 您可以定义一个 辅助变量,并将赋值作为 表达式,方法是将其括在

    (...)
    (即 分组运算符)中,该运算符将分配的值传递给

  • 条目按顺序定义,因此后续条目可以引用 aux。之前定义的变量。

@{
  # Note the *definition* of aux. variable $gb
  Gb = ($gb = [double] (Read-Host "How much space (in Gb) would you like left over?"))
  # Note the *use* of $gb
  b = $gb * 1Gb
}

假设您在出现提示时输入

2
,您将得到以下显示输出:

Name                           Value
----                           -----
Gb                             2
b                              2147483648

注:

© www.soinside.com 2019 - 2024. All rights reserved.