구 원트노/루비 기초

[루비 기초]4장 배열

배열

기존의 데이터를 저장하는 방식은 변수를 사용했습니다.
그러나 이 방법은 하나의 변수에 하나의 데이터만 저장 가능합니다.
하나의 변수에 여러 개의 값을 저장하는 방법을 배열이라 합니다.

변수와 배열 비교

1
2
3
4
5
my_foo1=1 #변수 사용
my_foo2=2
my_foo3=3
 
my_array=[1,2,3#배열 
cs

3개의 변수로 처리하던 작업을 배열을 사용하니 한 줄로 해결됩니다.


배열 생성1

1
people=["jake",12,3.14,false]
cs

배열은 '[]'안에 요소가 될 값을 쉼표 구분으로 기술합니다.

하나의 배열에 형이 다른 요소들을 집어넣을 수 있습니다.

보시면 people 배열에는 string형과 int형, float형, boolean형을 동시에 포함하고 있습니다.


배열 생성2

1
2
3
people=%w(jake jane bob) # ["jake", "jane", "bob"]
 
animal= Array.new # []
cs

1번째 줄 방법은 %w()안에 문자를 집어넣으면 공백을 구분으로 문자열 배열로 변환해줍니다.

다음 방법은 비어있는 배열을 생성하는 방법입니다.


배열 요소 출력

1
2
3
4
5
6
people=["jake",12,3.14,false]
 
puts people[0]  #jake
puts people[1]  #12
puts people[3]  #false
puts people[10#nil
cs

배열 안의 각 요소들은 색인(index)을 가지고 있습니다.

첫 번째 요소는 0의 인덱스, 그 다음은 1 이런 식으로 계속 되어집니다.

그리고 이 인덱스를 통해 각 요소의 데이터를 출력할 수 있습니다.

3번째 줄을 보면 people[0]으로 0인덱스에 위치한 "jake"에 접근했습니다. 

그렇다면 데이터가 존재하지 않는 인덱스를 지정한 경우 어떻게 될까요?

6번째 줄이 그 예인데 nil이 반환됩니다.


배열 요소 출력2

1
2
3
4
5
6
7
people=["jake",12,3.14,false]
 
people.values_at(1)   #[12]
people.values_at(1,3#[12,false]
people.first          #["jake"]
people.last           #[false]
people.sample         #[12]
cs

values_at()은 복수의 인덱스의 요소를 가져올 때 사용합니다.

first는 배열 처음 데이터 last는 마지막 요소를 가져옵니다.

sample은 배열 요소 중 무작위로 출력됩니다.


배열 요소 추가 삭제


1
2
3
4
animal= Array.new     # []
animal << "monkey"  # ["monkey"]
animal.push "lion"    # ["monkey", "lion"]
animal.pop          # ["monkey"]
cs

배열 끝에 요소를 하나 추가하려면 <<나 push를 사용하면 됩니다.

끝에 요소를 제거할 때는 pop을 사용합니다.


배열 변경

1
2
3
4
5
6
7
8
9
array = [false,nil,0,1,1]
 
array.compact #[false,0,1,1]
array.uniq    #[false,nil,0,1]
 
int_array = [4,5,2,8,1]
 
int_array.sort       #[1,2,4,5,8]
int_array.reverse #[1,8,2,5,4]
cs

compact는 nil을 제거한 새로은 배열을 반환합니다.

uniq는 중복을 제거합니다.

sort는 오름차순 정렬 작업을 합니다.

reverse는 요소 순서를 역으로 변경한 새로운 배열을 반환합니다. 


궁금하신 점 있으시면 댓글 남겨주세요!!