Ruby에서 배열로 작업하는 방법
소개
배열은 요소라고 하는 값 목록을 나타내는 데이터 구조입니다. 배열을 사용하면 단일 변수에 여러 값을 저장할 수 있습니다. Ruby에서 배열은 숫자, 문자열 및 기타 Ruby 객체를 포함한 모든 데이터 유형을 포함할 수 있습니다. 이렇게 하면 코드를 압축하고 구성하여 더 읽기 쉽고 유지 관리할 수 있습니다. 모든 배열은 호출할 수 있는 고유한 메서드가 있는 개체로, 데이터 집합 작업을 위한 표준화된 방법을 제공합니다.
이 자습서에서는 배열을 만들고 포함된 값에 액세스하고 배열의 요소를 추가, 수정 및 제거하고 배열의 요소를 반복하여 더 복잡한 문제를 해결합니다.
배열 만들기
배열을 만드는 방법을 자세히 살펴보는 것으로 시작합니다. 예를 들어, 다음은 다양한 상어 종의 목록입니다. 배열이 없으면 개별 변수에 저장할 수 있습니다.
shark1 = "Hammerhead"
shark2 = "Great White"
shark3 = "Tiger"
이 접근 방식은 장황하고 유연하지 않기 때문에 유지 관리가 빠르게 어려워질 수 있습니다. 다른 상어를 추가한다는 것은 추가 변수를 추가하고 추적해야 함을 의미합니다.
배열을 사용하면 이 데이터를 단순화할 수 있습니다. Ruby 프로그램에서 배열을 만들려면 대괄호([]
)를 사용하고 저장하려는 값을 쉼표로 구분합니다.
sharks = ["Hammerhead", "Great White", "Tiger"]
3개의 개별 변수를 만드는 대신 이제 3개의 상어를 모두 포함하는 하나의 변수가 있습니다. 이 예에서는 대괄호([]
)를 사용하여 배열을 만들고 각 항목을 쉼표로 구분했습니다. 추가 상어를 추가해야 하는 경우 새 변수를 만들고 관리하는 대신 배열에 다른 상어를 추가합니다.
배열의 내용을 표시하는 print
문을 사용하여 전체 배열을 인쇄할 수 있습니다.
print sharks
Output["Hammerhead", "Great White", "Tiger"]
각 항목이 단일 단어인 배열을 생성하려면 단어 배열을 생성하는 %w{}
구문을 사용할 수 있습니다.
days = %w{Monday Tuesday Wednesday Thursday Friday Saturday Sunday}
이는 대괄호로 배열을 만드는 것과 동일합니다.
days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
그러나 %w{}
메서드를 사용하면 따옴표와 쉼표를 건너뛸 수 있습니다.
배열은 유사한 데이터 유형의 목록을 함께 그룹화하는 데 자주 사용되지만 Ruby에서는 배열에 모든 값 또는 혼합 값이 포함될 수 있습니다. 여기에는 다른 어레이가 포함됩니다. 다음은 문자열, nil
값, 정수 및 문자열 배열을 포함하는 배열의 예입니다.
record = [
"Sammy",
null,
7,
[
"another",
"array",
]
]
이제 배열에 저장된 데이터에 액세스하는 방법을 살펴보겠습니다.
배열의 항목에 액세스
특정 항목 또는 배열의 요소에 액세스하려면 색인 또는 배열에서의 위치를 참조합니다. Ruby에서 인덱스는 0부터 시작합니다. sharks
배열에서 첫 번째 요소를 검색하려면 대괄호를 사용하여 요소의 인덱스를 변수에 추가합니다.
sharks = ["Hammerhead", "Great White", "Tiger"]
sharks
배열에는 세 가지 요소가 있습니다. 다음은 sharks
배열의 각 요소가 인덱싱되는 방법에 대한 분석입니다.
Hammerhead | Great White | Tiger |
---|---|---|
0 | 1 | 2 |
배열의 첫 번째 요소는 0
에 인덱싱된 Hammerhead
입니다. 마지막 요소는 Tiger
이며 2
에 인덱싱됩니다. 카운팅은 인덱스에서 0
부터 시작하는데, 이는 1부터 카운팅을 시작하는 자연스러운 직관에 어긋나므로 자연스럽게 될 때까지 이 점을 염두에 두어야 합니다.
참고: 인덱스를 오프셋으로 생각하면 도움이 될 수 있습니다. 즉, 배열 시작부터의 위치 수를 의미합니다. 첫 번째 요소는 시작 부분에 있으므로 해당 오프셋 또는 인덱스는 0
입니다. 두 번째 요소는 배열의 첫 번째 항목에서 한 지점 떨어져 있으므로 해당 오프셋 또는 인덱스는 1
입니다.
length
메소드를 사용하여 배열에 몇 개의 요소가 있는지 확인할 수 있습니다.
sharks.length
Output3
sharks
의 인덱스는 0
에서 시작하여 2
로 이동하지만 length
속성은 다음의 요소 수를 반환합니다. 3
인 배열입니다. 인덱스와 전혀 관련이 없습니다.
Tiger
와 같은 배열의 특정 요소의 인덱스 번호를 찾으려면 index()
메서드를 사용하세요.
print sharks.index("Tiger")
Output2
해당 텍스트를 포함하는 첫 번째 요소의 인덱스를 반환합니다. 존재하지 않는 값과 같이 인덱스 번호를 찾을 수 없는 경우 콘솔은 nil
을 반환합니다.
print sharks.index("Whale")
Outputnil
Ruby에서 배열의 마지막 요소를 얻으려면 색인 -1
을 사용하십시오.
print sharks[-1]
Output"Tiger"
Ruby는 인덱스를 사용하지 않고 첫 번째 요소와 마지막 요소를 가져오는 first
및 last
메서드도 제공합니다.
puts sharks.first
puts sharks.last
Output"Hammerhead"
"Tiger"
존재하지 않는 인덱스에 액세스하려고 하면 nil
이 반환됩니다.
sharks[10]
Outputnil
배열은 중첩 배열이라고 하는 다른 배열을 포함할 수 있습니다. 이것은 프로그램에서 2차원 데이터 세트를 모델링하는 한 가지 방법입니다. 중첩 배열의 예는 다음과 같습니다.
nested_array = [
[
"salmon",
"halibut",
],
[
"coral",
"reef",
]
]
중첩 배열의 요소에 액세스하려면 내부 배열에 해당하는 다른 인덱스 번호를 추가합니다. 예를 들어 이 중첩 배열에서 coral
값을 검색하려면 다음 명령문을 사용합니다.
print nested_array[1][0];
Outputcoral
이 예에서는 [\coral\, \reef\]
배열을 반환하는 nested_array
변수의 위치 1
에서 배열에 액세스했습니다. . 그런 다음 \coral\
인 해당 배열의 0
위치에 있는 요소에 액세스했습니다.
이제 배열에 요소를 추가하는 방법을 살펴보겠습니다.
배열에 요소 추가
sharks
배열에는 0
에서 2
까지 인덱싱된 세 가지 요소가 있습니다.
sharks = ["Hammerhead", "Great White", "Tiger"]
새 요소를 추가하는 몇 가지 방법이 있습니다. 다음 인덱스에 값을 할당할 수 있습니다. 이 경우 3
이 됩니다.
sharks[3] = "Whale";
print sharks
Output["Hammerhead", "Great White", "Tiger", "Whale"]
이 방법은 오류가 발생하기 쉽습니다. 요소를 추가하고 실수로 인덱스를 건너뛰면 배열에 nil
요소가 생성됩니다.
sharks[5] = "Sand";
print sharks;
Output["Hammerhead", "Great White", "Tiger", "Whale", nil, "Sand"]
추가 배열 요소에 액세스하려고 하면 nil
값이 반환됩니다.
sharks[4]
Outputnil
배열에서 다음으로 사용 가능한 인덱스를 찾는 것은 오류가 발생하기 쉽고 시간이 더 걸립니다. 배열 끝에 요소를 추가하는 push
메서드를 사용하여 오류를 방지합니다.
sharks.push("Thresher")
print sharks
Output["Hammerhead", "Great White", "Tiger", "Whale", nil, "Whale", "Thresher"]
push
메서드 대신 <<
구문을 사용하여 배열 끝에 요소를 추가할 수도 있습니다.
sharks << "Bullhead"
Output["Hammerhead", "Great White", "Tiger", "Whale", nil, "Whale", "Thresher", "Bullhead"]
배열의 시작 부분에 요소를 추가하려면 unshift()
메서드를 사용하십시오.
sharks.unshift("Angel")
print sharks
Output["Angel", "Hammerhead", "Great White", "Tiger", "Whale", nil, "Whale", "Thresher", "Bullhead"]
이제 요소를 추가하는 방법을 알았으므로 요소를 제거하는 방법을 살펴보겠습니다.
배열에서 요소 제거
배열에서 특정 요소를 제거하려면 delete
또는 delete_at
메서드를 사용하세요. sharks
배열에서 이전에 nil
배열 요소를 만들었습니다. 이제, 당신은 그것을 제거할 것입니다.
먼저 배열에서 해당 위치를 찾습니다. 인덱스
메서드를 사용하여 이를 수행할 수 있습니다.
print sharks.index(nil)
Output4
그런 다음 delete_at
를 사용하여 인덱스 4
에서 요소를 제거하고 배열을 인쇄합니다.
sharks.delete_at(4)
print sharks
Output["Angel", "Hammerhead", "Great White", "Tiger", "Whale", "Thresher", "Bullhead"]
delete
메서드는 전달한 값과 일치하는 배열에서 요소를 제거합니다. 이 메서드를 사용하여 배열에서 Whale
을 제거합니다.
sharks.delete("Whale")
print sharks;
Output["Angel", "Hammerhead", "Great White", "Tiger", "Thresher", "Bullhead"]
delete
메소드는 전달한 값의 모든 항목을 제거하므로 배열에 중복 요소가 있는 경우 모두 제거됩니다.
pop
메소드는 배열의 마지막 요소를 제거합니다:
sharks.pop
print sharks;
Output["Angel", "Hammerhead", "Great White", "Tiger", "Thresher"]
Bullhead
가 배열의 마지막 요소에서 제거되었습니다. 배열의 첫 번째 요소를 제거하려면 shift
메서드를 사용하십시오.
sharks.shift
print sharks
Output["Hammerhead", "Great White", "Tiger", "Thresher"]
이번에는 배열의 시작 부분에서 Angel
이 제거되었습니다.
pop
및 shift
를 사용하여 배열의 시작과 끝에서 요소를 제거할 수 있습니다. 배열의 나머지 항목은 원래 인덱스 번호를 유지하므로 가능한 한 pop
을 사용하는 것이 좋습니다.
delete_at
, pop
및 shift
메서드는 모두 원래 배열을 변경하고 삭제한 요소를 반환합니다.
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
deleted_at_element = sharks.delete_at(1)
popped_element = sharks.pop
puts "Deleted_at element: #{deleted_at_element}"
puts "Popped element: #{popped_element}"
puts "Remaining array: #{sharks}"
OutputDeleted_at element: Great White
Popped element: Whale
Remaining array: ["Hammerhead", "Tiger"]
이제 배열에서 요소를 제거하는 여러 가지 방법을 알게 되었습니다. 이제 이미 가지고 있는 요소를 수정하는 방법을 살펴보겠습니다.
배열의 기존 요소 수정
배열의 요소를 업데이트하려면 일반 변수와 마찬가지로 할당 연산자를 사용하여 요소의 인덱스에 새 값을 할당합니다.
인덱스 0
에 \Hammerhead\
가 있는 새로운 상어 배열이 주어지면 \Hammerhead\
를 \Angel\로 대체합니다.
:
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks[0] = "Angel"
print sharks;
Output["Angel", "Great White", "Tiger", "Whale"]
올바른 요소를 업데이트하려면 삭제하려는 요소를 찾을 때와 마찬가지로 index
메서드를 사용하여 먼저 요소를 찾을 수 있습니다.
이제 배열의 모든 요소로 작업하는 방법을 살펴보겠습니다.
배열 반복
Ruby는 배열을 반복하는 다양한 방법을 제공하며 사용하는 각 방법은 수행하려는 작업의 종류에 따라 다릅니다. 다음으로 배열을 반복하고 각 요소를 표시하는 방법을 살펴보겠습니다.
Ruby는 for..in
구문을 제공합니다.
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
for shark in sharks do
puts shark
end
sharks
배열의 각 요소에 대해 Ruby는 해당 요소를 로컬 변수 shark
에 할당합니다. 그런 다음 puts
를 사용하여 요소의 값을 인쇄할 수 있습니다.
하지만 for..in
은 자주 볼 수 없습니다. Ruby 배열은 개체이며 요소 작업을 위한 각
메서드를 제공합니다. each
메소드는 for..in
과 유사한 방식으로 작동하지만 구문이 다릅니다.
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks.each do |shark|
puts shark
end
each
메서드는 Ruby 프로그래밍에서 자주 볼 수 있는 구문을 사용합니다. Ruby 블록을 인수로 사용합니다. 블록은 메서드 컨텍스트에서 나중에 실행될 일부 코드입니다. 이 경우 코드는 상어 넣기
입니다. 파이프 문자(|
)로 묶인 shark
키워드는 블록이 액세스할 배열의 요소를 나타내는 지역 변수입니다. Ruby는 이 변수에 요소를 할당하고 블록의 코드를 실행합니다. each
메서드는 배열의 각 요소에 대해 이 프로세스를 반복합니다.
OutputHammerhead
Great White
Tiger
Whale
블록이 한 줄이면 Ruby 개발자가 do
및 end
키워드를 중괄호로 바꾸고 전체 명령문을 한 줄로 압축하는 것을 자주 볼 수 있습니다.
...
sharks.each {|shark| puts shark }
이것은 동일한 결과를 생성하지만 더 적은 코드 줄을 사용합니다.
each_with_index
메서드는 비슷한 방식으로 작동하지만 배열 요소의 인덱스에 대한 액세스도 제공합니다. 이 프로그램은 each_with_index
를 사용하여 각 요소에 대한 인덱스와 값을 출력합니다.
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks.each_with_index do |shark, index|
puts "The index is #{index}"
puts "The value is #{shark}"
end
배열의 각 요소에 대해 Ruby는 요소를 변수 shark
에 할당하고 현재 인덱스를 index
변수에 할당합니다. 그런 다음 블록에서 두 변수를 모두 참조할 수 있습니다.
OutputThe index is 0
The value is Hammerhead
The index is 1
The value is Great White
The index is 2
The value is Tiger
The index is 3
The value is Whale
웹 사이트의 데이터베이스에서 항목을 표시해야 하거나 파일에서 줄을 읽고 내용을 처리할 때와 같이 자신의 프로그램에서 배열의 요소를 자주 반복합니다.
결론
배열은 Ruby 프로그래밍의 매우 다재다능하고 기본적인 부분입니다. 이 자습서에서는 배열을 만들고 개별 요소에 액세스했습니다. 또한 배열의 요소를 추가, 제거 및 수정했습니다. 마지막으로 데이터를 표시하는 일반적인 방법으로 사용되는 배열을 반복하고 해당 내용을 표시하는 두 가지 방법을 살펴보았습니다.
Ruby의 데이터 유형 이해 자습서를 읽어 Ruby의 다른 데이터 유형에 대해 알아보세요.