Поскольку вы пытаетесь конкатенация массива , вы должны убедиться, что ваш первый операнд является массивом (тоже):
@('A') + 2..9 + 'J','K','Q'
@('A')
гарантирует, что 'A'
является массивом, используя оператор подвыражения массива PowerShell .
Важно :@(...)
гарантирует , что ...
является массивом, но это не обязательно конструкция единица - если то, что ...
оценивает уже , является массивом, оставлено в покое , свободно говоря.
В качестве альтернативы , вы можете использовать одинарную форму ,
- PowerShell массив - конструкция оператор («оператор запятой») - для построения 'A'
в виде одноэлементного массива:
, 'A' + 2..9 + 'J','K','Q'
Оба решения приводят к массиву, которыйэквивалент (в виде исходного кода):
'A', '2', '3', '4', '5', '6', '7', '8', '9', 'J', 'K', 'Q'
Что касается того, что вы пытались :
С такими операторами, как +
которые имеют типe-специфичные перегрузки , обычно тип LHS определяет поведение .
В вашем случае (первый) LHS является (одиночным) string , 'A'
, поэтому +
выполняет string сцепление.
То есть оставшиеся операнды были добавлены к строке 'A'
в их строковая форма , которая в случае массивов означает разделенный пробелами список элементов массива.
Упрощенный пример:
PS> 'A' + ('B', 'C')
AB C
То есть строковое значение массива 'B', 'C'
- эквивалент 'B C'
- добавлено к строке 'A'
.