|
|||
|
|
루비에서 배열과 해시는 색인된 컬렉션이다. 둘 다 키를 이용해 접근할 수 있지만 해시는 키 값으로 어떠한 객체를 사용해도 상관없지만, 배열은 정수만 사용할 수 있다. 배열과 해시 모두 새로운 요소를 담기 위해서 공간이 더 필요해지면 필요한 만큼 스스로 확장한다. 또한 어떤 타입의 객체라도 함께 저장할 수 있다.
1. 배열생성 방법 - 리터럴 & 객체생성배열을 만들 때는 리터럴을 사용하거나, 명시적으로 Array 객체를 생성하는 방법이 있다.리터럴로 만들기 a = [3.14, "pie", 99] puts a.class puts a.length puts a[0] puts a[1] puts a[2] puts a[3] - 실행결과 - Array 3 3.14 pie 99 nil 리터럴 생성 단축 문법 # c는 b와 같은 배열을 더욱 간단히 만들어 준다.
b = ["개미", "거미", "강아지", "고양이", "벌"]
c = %w{개미 거미 강아지 고양이 벌}
대괄호[] 대신 중괄호{}를 써주고 앞에 %w를 써주면 된다. 그리고 모든 단어를 콤마로 구분해 주지 않아도 된다.배열객체 생성하기 d = Array.new d[0] = "second" d[1] = "array" puts d.class puts d[0] puts d[1] puts d[2] - 실행결과 - Array second array nil 배열의 인덱스는 0에서 시작한다. 배열의 위치에 아무것도 없다면 nil을 반환한다. nil은 '아무것도 아님'을 표현하는 하나의 객체이다. 2. 배열의 인덱스 사용방법![]() 그림 출처 : 프로그래밍 루비 57page. e = %w{1 2 3 4 5}
e[0] # 1
e[-1] # 5
e[-2] # 4
e[-99] # nil
e[1, 3] # [2, 3, 4]
e[3, 1] # [4]
e[-3, 2] # [3, 4]
e[1..3] # [2, 3, 4]
e[1...3] # [2, 3]
e[3..3] # [4]
e[-3..-1] # [3, 4, 5]
배열에 값 대입하기 e = %w{1 2 3 4 5}
e[1] = 'bat'
e[-3] = 'cat'
e[3] = ['a', 'b']
e[6] = [7]
puts e- 실행결과 - 특정 인덱스에 배열을 넣을 수도 있고, 인텍스 사이에 간격이 생기면 nil로 채워진다.[1, 'bat', 'cat', [a, b], 5, nil, 7] e = %w{1 2 3 4 5}
e[2, 2] = 'cat' #[1, 2, 'cat', 5]
e[2, 0] = 'dog' #[1, 2, 'dog', 'cat', 5]
e[1, 1] = [6, 7, 8] #[1, 6, 7, 8, 'dog', 'cat', 5]
e[0..3] = [] #['dog', 'cat', 5]
e[5..6] = 'a', 'b' #['dog', 'cat', 5, nil, nil, a, b]
3. 해시배열의 인덱스는 정수만 사용가능한 반면 해시의 인덱스는 문자열, 정규표현식을 포함한 어떠한 종류의 객체도 사용할 수 있다. 하지만 해시의 각 원소는 순서가 없다. 리터럴을 사용해 해시 만들기 h = {'dog' => '진도개', 'bird' => '까지', 'fish' => '붕어'}
puts h.length
puts h['dog']
puts h['bird']- 실행결과 - 3 진도개 참새 해시에 값대입 h[12] = '십이' h['fish'] = '잉어' puts h[12] puts h['fish'] - 실행결과 - 십이 잉어 ※ 위 내용은 데이브토머스 차드파울러 앤디헌트 지음, 강문식, 박지인, 양석호 옮김 『Programming Ruby』 책의 내용을 바탕으로 정리한 것입니다. |
||
최근 댓글