【问题标题】:Change values of an array of pscustomobject's with a for-loop使用 for 循环更改 pscustomobjects 数组的值
【发布时间】:2014-12-05 14:39:37
【问题描述】:

我尝试创建自定义对象数组 (pscustomobject),现在我尝试使用 for 循环更改不同自定义对象的一些值。但这似乎不起作用。这是我尝试过的:

$obj = @([pscustomobject]@{value=0;type="D";used=$false})
$arr1 = @($obj) * 10

for($v = 0; $v -lt 4; $v++){
 $arr1[$v].value = ($v+1)
 $arr1[$v].type ="bubble"
}

结果是:

                        value type                                                   used
                    ----- ----                                                   ----
                        4 bubble                                                False
                        4 bubble                                                False
                        4 bubble                                                False
                        4 bubble                                                False
                        4 bubble                                                False
                        4 bubble                                                False
                        4 bubble                                                False
                        4 bubble                                                False
                        4 bubble                                                False
                        4 bubble                                                False

但我预计结果会是:

                        value type                                                   used
                    ----- ----                                                   ----
                        1 bubble                                                False
                        2 bubble                                                False
                        3 bubble                                                False
                        4 bubble                                                False
                        4 D                                                     False
                        4 D                                                     False
                        4 D                                                     False
                        4 D                                                     False
                        4 D                                                     False
                        4 D                                                     False

这只是一个片段,我只是在尝试一些东西。但我有点恼火,我不明白......对不起,我认为这是一个简单的想法,但看不出有什么问题......我仍然是一个 PS 菜鸟......:-/

编辑:使用了 PSv3,但我认为没关系...

【问题讨论】:

    标签: powershell for-loop powershell-3.0 pscustomobject


    【解决方案1】:

    这个:

    $arr1 = @($obj) * 10
    

    没有创建 10 个新对象。它创建了 10 个对同一对象的引用。

    注意区别:

    $arr1 = 1..10 |% {[pscustomobject]@{value=0;type="D";used=$false}}
    
    for($v = 0; $v -lt 4; $v++){
     $arr1[$v].value = ($v+1)
     $arr1[$v].type ="bubble"
    }
    $arr1
    
                                           value type                                                                                 used
                                           ----- ----                                                                                 ----
                                               1 bubble                                                                              False
                                               2 bubble                                                                              False
                                               3 bubble                                                                              False
                                               4 bubble                                                                              False
                                               0 D                                                                                   False
                                               0 D                                                                                   False
                                               0 D                                                                                   False
                                               0 D                                                                                   False
                                               0 D                                                                                   False
                                               0 D                                                                                   False
    

    【讨论】:

    • 谢谢!这真的很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    相关资源
    最近更新 更多