[[pagelist(^RubyLanguage)]] [[TableOfContents]] = 컨테이너 = * 객체를 구조화된 방법으로 저장해둘 수 있는 추상 데이터 타입(ADT) * 배열과 해시는 * Ruby 프로그래밍에 있어 가장 기본적인 컨테이너 객체이다. * 다른 객체로의 참조를 저장하는 컨테이너이다. * Ruby는 iterator를 통해 컨테이너 상의 반복을 자연스럽게 표기할 수 있다. == 배열 == * 객체로의 참조를 차례대로 나열한 것. * 배열이 저장하고 있는 것은 객체 그 자체가 아니다. * 객체 자체를 변경하면 그 객체를 참조하고 있는 모든 배열요소의 값도 변화한다. * 요소 * 배열이 저장하고 있는 각각의 객체 참조. * 배열의 요소가 동일한 자료형일 필요는 없다. * 요소로 배열을 포함할 수도 있다. * 첨자 * 배열의 요소가 몇번째 순서인지 가리키는 번호. * 0부터 시작한다. === 생성 === * 리터럴로 생성 {{{ array = ["a", "b", 3, "String", [1, 2]] }}} * Array.new로 생성 {{{ array = Array.new }}} === 첨자참조 === * 첨자참조 연산자 * [] 를 사용해 참조 위치의 객체에 접근할 수 있다. * 해당하는 요소가 존재하지 않는 첨자에 대해서는 nil을 반환한다. {{{ a, b = 1, 2 array = [a, b, 3, "String", [1, 2]] coffee = ["아메리카노", "카페모카", "카푸치노"] array[0] #array 배열의 첫번째 요소인 a에 접근 p array[0] #a의 값인 1 출력 [[FootNote( * '''p 메서드''' : 객체를 디버그에 적합한 형식으로 문자열화하여 출력하는 메서드로 주로 디버그 출력을 위해 사용. 디버그, 학습, ShortCoding 이외에는 사용하지 않는 것이 좋다.)]] coffee[2] #coffee 배열의 세번째 요소인 "카푸치노"에 접근 p coffee[2] #"카푸치노" 출력 coffee[3] #coffee 배열의 네번째 요소에 접근하나 요소가 없으므로 nil 반환 }}} * 음의 첨자 * 음의 첨자 사용시 뒤에서부터 역순으로 요소를 가리킨다. * {{{a[-n] = a[a.length - n]}}} {{{ array = [3, "String", [1, 2]] p array[-2] #"String" 출력 }}} * 길이를 포함한 첨자 * 위치와 길이를 지정하는 참조방법 * name[n, m] : name 배열의 n 위치부터 최대 m개의 요소를 포함하는 새로운 배열 객체를 생성하여 반환 {{{ a, b = 1, 2 array = [a, b, 3, "String", [1, 2]] p array[1, 2] #[2, 3] 출력 p array[3, 3] #["String", [1, 2]] 출력 p array[-5, 3] #[1, 2, 3] 출력 }}} * 범위 첨자 * 범위 안에 포함되는 요소를 얻을 수 있다. {{{ a, b = 1, 2 array = [a, b, 3, "String", [1, 2]] p array[0..2] #[1, 2, 3] 출력 p array[0...2] #[1, 2] 출력 p array[-4, 3] #[2, 3, "String"] 출력 }}} === 첨자대입 === === 비교 === === 메서드 === == 해시 == ---- [[FootNote]]