Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] создание массива в цикле

Ответить
Настройки темы
PowerShell - [решено] создание массива в цикле

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый вечер! Собственно вопрос почему не работает конструкция ниже?
Ошибка Index was outside the bounds of the array.

$a = 10
$b = 20
$c = $b - $a
$list1[1] = $a
for ($i = 2; $i -le $c; $i++)
{
$list1[$i]=$a+1
$list1
}
Знаю что можно сделать проще через $list1 = 10..20, это просто пример.
Как можно создать массив, записывая каждый его элемент в цикле?

Отправлено: 23:40, 23-02-2017

 

Ветеран


Contributor


Сообщения: 25402
Благодарности: 7377

Профиль | Отправить PM | Цитировать


Цитата Neldoreth_inf:
Собственно вопрос почему не работает конструкция ниже?
Ошибка Index was outside the bounds of the array. »
А у меня — другая:
Цитата:
Cannot index into a null array.
в:
Код: Выделить весь код
$list1[1] = $a
Ошибка же:
Цитата Neldoreth_inf:
Index was outside the bounds of the array. »
проявляется тогда, когда Вы пытаетесь обратиться к несуществующим по указанному индексу элементам. В Вашем случае — Вы явно обращаетесь к элементу за пределами массива.

Цитата Neldoreth_inf:
Как можно создать массив, записывая каждый его элемент в цикле? »
Например, так (разумеется, не единственный способ):
Код: Выделить весь код
$aArray = @()

for($i = 0; $i -lt 20; $i++) {
    $aArray += $i * 2
}

$aArray.GetLowerBound(0), $aArray.GetUpperBound(0)
''
$aArray
Обратите внимание, что индекс первого элемента массива — 0 (причём — всегда 0), последнего элемента — 19 (но не 1 и 20 соответственно).

Или же, с явной декларацией массива и столь любезным Вам способом присваивания по индексу элемента:
Код: Выделить весь код
$aArray = New-Object -Type System.Int32[] 20

for($i = $aArray.GetLowerBound(0); $i -le $aArray.GetUpperBound(0); $i++) {
    $aArray[$i] = $i * 2
}

$aArray.GetLowerBound(0), $aArray.GetUpperBound(0)
''
$aArray
Есть и такие способы создания массива искомого размера:
Код: Выделить весь код
$aArray = @(0) * 20
$aArray = ,0 * 20
и т.п.

Чтоб Вам стало понятнее (Вы явно переходите с какого-то другого языка), почитайте вот это: Learn Simple Ways to Handle Windows PowerShell Arrays – Hey, Scripting Guy! Blog.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:57, 24-02-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Большое спасибо.

Отправлено: 07:42, 24-02-2017 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] создание массива в цикле

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Создание собственного массива объектов powershell 2.0 dosperados Скриптовые языки администрирования Windows 2 01-07-2015 11:25
2008 - Создание Raid массива без потери данных NikiWin Windows Server 2008/2008 R2 7 24-02-2011 07:58
Delphi - Создание массива кнопок VovanZ Программирование и базы данных 3 24-12-2009 22:49
Создание raid массива на работающей системе Orfan Microsoft Windows NT/2000/2003 5 28-10-2008 23:10
Создание динамического массива на Pascal-е Skynet Программирование и базы данных 3 09-10-2004 18:05




 
Переход