Powershell: динамические переменные внутри foreach
506
Steven
Я пытаюсь сделать некоторые математические расчеты для динамического списка пользователей, который я буду использовать для запуска поиска и анонимного подсчета некоторых результатов, а затем добавляю к промежуточному итогу для каждого пользователя. Так, например:
Когда переменная создана, мне нужно, чтобы она была доступна для дальнейших циклов, где я добавлю счет к числу, уже сохраненному в переменной.
И нет, я не могу использовать переменную $ user, потому что она должна сохраняться после завершения цикла foreach.
Итак, вопрос в том, как сгенерировать эту инкрементную переменную, не зная предела числа возможных объектов?
---РЕДАКТИРОВАТЬ---
Добавляя простой пример того, о чем я говорю ...
После обратной связи я смотрю на хеш-таблицы, но все еще не могу понять, как ссылаться.
Представьте себе игру в кости между динамическим списком людей с несколькими раундами. Я хочу увеличить за раунд их общее количество. Моя проблема - последняя строка, где я пытаюсь обновить итоговую сумму с помощью списка. Как я могу ссылаться на значение хеш-таблицы?
Нет необходимости заранее объявлять переменную в PS. Но вы также должны исследовать переменную область, которая вызовет проблемы с тем, как вы идете сейчас.
music2myear 6 лет назад
1
Я действительно должен объявить заранее, потому что позже у меня будет несколько циклов, которые будут добавлены, поэтому я не могу просто использовать переменную внутри цикла. Также поймите, что касается области видимости, и я буду иметь дело с этим, я просто ищу, как создать переменную таким образом, чтобы я мог прочитать ее позже ...
Steven 6 лет назад
0
Пока вы продолжаете ссылаться на переменные, используя $ Script: var_name, вы можете манипулировать ими по всему сценарию, в любом цикле или функции. Если это не то, что вы спрашиваете, возможно, вы можете уточнить?
music2myear 6 лет назад
0
Вы можете создавать переменные с помощью командлета New-Variable. Поскольку цикл `for` не вводит новую область видимости, они будут доступны в следующих циклах в текущей области видимости по умолчанию. Вы также можете указать желаемую область в качестве параметра для командлета `New-Variable`. Но, если вы не можете дать хорошее обоснование для использования переменных с динамическими именами, вы должны рассмотреть вместо этого использование массива.
PetSerAl 6 лет назад
2
1 ответ на вопрос
0
maoizm
в вашем примере это будет $ptotal["player$y"] += $roll