Array.Add vs +=
PowerShell 어레이에서 다음과 같은 흥미로운 동작을 발견했습니다.
$array = @()
그런 다음 다음 다음 명령어를 사용하여 항목을 추가합니다.$array.Add("item")
method에서 다음 오류가 발생합니다.
"1" 인수를 사용하여 "추가"를 호출하는 예외: "수집이 고정 크기였습니다."
그러나 다음을 사용하여 항목을 추가하는 경우$array += "item"
아이템은 문제없이 접수되고 "크기 제한"은 적용되지 않는 것 같습니다.
왜 이러한가?
를 사용하는 경우$array.Add()
기존 배열에 요소를 추가하려고 합니다.어레이는 고정된 크기의 집합이므로 확장할 수 없기 때문에 오류가 발생합니다.
$array += $element
기존 어레이 + 새 아이템과 동일한 요소를 사용하여 새 어레이를 만듭니다.이 새로운 대형 어레이는 기존 어레이를 대체합니다.$array
-스위치
+= 연산자를 사용하여 요소를 배열에 추가할 수 있습니다.이 어레이를 사용하면 윈도우즈 PowerShell은 원래 어레이의 값과 추가 가치를 사용하여 새 어레이를 생성합니다.예를 들어 값이 200인 요소를 $a 변수의 배열에 추가하려면 다음과 같이 입력합니다.
$a += 200
+=
는 비용이 많이 드는 작업이기 때문에 많은 아이템을 추가할 필요가 있는 경우 가능한 한 적은 조작으로 추가할 필요가 있습니다.예를 들어 다음과 같습니다.
$arr = 1..3 #Array
$arr += (4..5) #Combine with another array in a single write-operation
$arr.Count
5
이것이 불가능할 경우 다음과 같은 보다 효율적인 수집을 사용하는 것이 좋습니다.List
또는ArrayList
(다른 답을 참조).
동적 크기의 배열을 원하는 경우 목록을 작성해야 합니다.뿐만 아니라.Add()
@frode-f의 설명대로라면 다이내믹 어레이가 메모리 효율이 높고, 어쨌든 더 좋은 프랙티스입니다.
게다가 사용하기 쉬워요.
어레이 선언 대신 다음을 수행합니다.
$outItems = New-Object System.Collections.Generic.List[System.Object]
아이템 추가는 간단합니다.
$outItems.Add(1)
$outItems.Add("hi")
또한 어레이가 필요한 경우에도 사용할 수 있는 기능이 있습니다.
$outItems.ToArray()
비효율적인 어레이를 사용하지 않고 어레이를 작성하기 위한 가장 일반적인 관용어+=
루프의 출력에서는 다음과 같습니다.
$array = foreach($i in 1..10) {
$i
}
$array
기존 배열에 추가:
[collections.arraylist]$array = 1..10
$array.add(11) > $null
언급URL : https://stackoverflow.com/questions/14620290/array-add-vs
'code' 카테고리의 다른 글
플렉스 아이템을 오른쪽 정렬하는 방법 (0) | 2023.04.08 |
---|---|
SQL Developer에서 SQL Server 스토어드 프로시저를 실행하는 방법 (0) | 2023.04.08 |
PowerShell에서 어레이의 모든 개체에서 하나의 속성 값 선택 (0) | 2023.04.08 |
Foreach-Object에서 'continue'가 'break'처럼 작동하는 이유는 무엇입니까? (0) | 2023.04.08 |
한 요소가 대기 중일 때 다른 요소에 영향을 미치는 방법 (0) | 2023.04.08 |