SlideShare a Scribd company logo
입문자를 위한 루비
   2. 배열과 해시
배열


• 배열이란 객체로의 참조를 차례로 나타낸
 것이다.

★ 배열의 요소는 ‘객체’ 그 자체가 아닌 ‘객
 체로의 참조’ 이다. 따라서 변경하면 실제
 값도 변화해서 보임
배열의 생성
• 요소를 그대로 나열 하고 양옆으로 대괄호 [, ]를 씌우면 생성

• 같은 자료형일 필요 없음

  a=1

  b = “str”

  c = [ a, b, 3, “문자열”] #=> [1, “str”, 3, “문자열”]

• 경우에 따라 객체를 포함하는 배열 그 자체도 요소가 될 수 있다.
  d = [a , c, [1, 2, 3]] #=> [1, [1, “str”, 3, “문자열”], [1,2,3,]]
첨자 참조

• 배열의 요소는 ‘0’부터 시작하는 인덱스로
 접근이 가능하다.

   ★ 음의 첨자가 존재함
    c[-1] #=> c[c.length-1]과 같음

    c[-5] #=> nil 반환(범위 밖)
길이를 포함한 첨자


• 번호 n 다음에 요소의 개수 m을 지정
    - n부터 m개의 요소를 가진 새로운 배열 객체를 생성하여 반환

      p c[1,2] #=> [“str”, 3]

      p c[1,3] #=> [“str”, 3, “문자열”]
범위 첨자

• 범위식에 의한 참조
 p c[0..1] #=> [1, “str”] 최종요소 포함
 p c[0...1] #=> [1] 최종요소 불포함


• 음의 첨자도 사용 가능
 p c[-2..3] #=> [3, “문자열”]
 p c[-guatda.com/cmx.p2...3] #=> [3]
첨자 대입
• 첨자대입을 이용하여 배열 내용을 갱신 가능
 a = [1, 2]
 a[0] = 3 #=> [3, 2]
 a[4] = “4” #=> [3, 2, nil, nil, “4”]
 a[0, 3] = ‘a’, ‘b’, ‘c’ #=> [“a”, “b”, “c”, nil, “4”]
 a[0, 3] = ‘a’, ‘b’, ‘c’, ‘d’ #=> [“a”, “b”, “c”, “d”, nil, “4”]




 a[0, 2] = “?” #=> [“?”, 2, “d”, nil, “4”]
첨자 대입
• 첨자대입을 이용하여 배열 내용을 갱신 가능
 a = [1, 2]
 a[0] = 3 #=> [3, 2]
 a[4] = “4” #=> [3, 2, nil, nil, “4”]
 a[0, 3] = ‘a’, ‘b’, ‘c’ #=> [“a”, “b”, “c”, nil, “4”]
 a[0, 3] = ‘a’, ‘b’, ‘c’, ‘d’ #=> [“a”, “b”, “c”, “d”, nil, “4”]

0부터 3개 < 입력된 요소는 4개
   => 개수 확장 후 대입

 a[0, 2] = “?” #=> [“?”, 2, “d”, nil, “4”]
첨자 대입
• 첨자대입을 이용하여 배열 내용을 갱신 가능
 a = [1, 2]
 a[0] = 3 #=> [3, 2]
 a[4] = “4” #=> [3, 2, nil, nil, “4”]
 a[0, 3] = ‘a’, ‘b’, ‘c’ #=> [“a”, “b”, “c”, nil, “4”]
 a[0, 3] = ‘a’, ‘b’, ‘c’, ‘d’ #=> [“a”, “b”, “c”, “d”, nil, “4”]

0부터 3개 < 입력된 요소는 4개
   => 개수 확장 후 대입
                                                      0부터 2개 > 입력된 요소 1개
 a[0, 2] = “?” #=> [“?”, 2, “d”, nil, “4”]
                                                        => 개수 축소 후 대입
배열 비교

• 대응하는 요소가 모두 동일할 경우에 한해
 서만 같다.

 arr1 = [1, 2, “str”]
 arr2 = [1, 2, “str”]
 arr1 == arr2 #=> true
 arr1 == [“str”, 1, 2] #=> false
블록 구문 메소드와
          iterator
• 반복처리를 추상화한 iterator라는 메소드
• 대표적으로 each가 있음
 array = [“a”, “b”, “c”]
 array.each do |item|
 print item + “ “ #=> a b c
 end
each_with_index


array.each_with_index do |item, index|
p [item, index]
end
#=> [“a”, 0] [“b”, 1] [“c”, 2]
사상(map)
acids = [“Adenin”, “Thymine”, “Guanine”, “Cytosine”]

signs = acids.map{|acid| acid[0,1] }

p signs #=> [“A”, “T”, “G”, “C”]
정렬(sort)

 array = [“73”, “2”, “5”, “1999”, “53”]

• 사전식 정렬
 p array.sort #=> [“1999”, “2” , “5”, “53”, “73”]

• 숫자로 변환, 비교해서 정렬
 p array.sort{|x,y| x.to_i <=> y.to_i}

 #=> [“2”, “5”, “53”, “73”, “1999”]
선택



• # 3학년 (person.grade가 3인 학생)만을 모은다.

  student.select{|person| person.grade == 3}
해시


• 임의의 객체를 키(key)를 이용해 다른 객체
 에 대응시키는 컨테이너 객체
 month_to_ordinal = {
 “Jan” => 1, “Feb” => 2, “Mar” => 3 ... }
 p month_to_ordinal[“Mar”] #=> 3
해시 생성

• 리터럴 기법으로 생성한다. 중괄호 내에 키
 (key)와 값(value)의 대응관계를 나열하면
 요소를 포함하는 해시가 생성됨
 prefix = “yahoo-”
 abbreviation = {
       “CAT” => “Condensed-Abridged Tiger”,
       “Yapomb” => prefix + “womb”,
       “pilk” => prefix + “milk”
   }
첨자 연산식

• 해시에서 첨자참조는 키가 되는 객체를 넘
 겨서 값을 반환하는 방법을 이용한다.
  book_to_author = {
  “Ruby in Nutshell” => “Flanagan”
  }
  p book_to_author[“Ruby in Nutshell”] #=> “Flanagan”
  p book_to_author[“Ruby in Nutshell”] = [“Flanagan”, “Martz”]
Enumerable 모듈

• Enumerable은 each 메소드로부터 도출 가
 능한 메소드를 모아놓은 모듈이다.

• Enumerable::Enumberator는 each 이외
 의 iterator에 기반해서 Enumerable의 기
 능을 제공하는 클래스다.

More Related Content

PDF
12 1. multi-dimensional array
PDF
11. array & pointer
PDF
Javascript - Array
PPTX
Probabilistic data structures
PPTX
Linear regression
PPTX
Count min sketch
PDF
Weird stuff with hashes.key
PPTX
Titanic with r
12 1. multi-dimensional array
11. array & pointer
Javascript - Array
Probabilistic data structures
Linear regression
Count min sketch
Weird stuff with hashes.key
Titanic with r

Viewers also liked (14)

PDF
KZO eLearning Webinar July 18, 2012
PPS
La pescuit
PPT
Linked deck 7 12
PPTX
PDF
Zemsania
PDF
เกณฑ์การประเมิน
PPTX
아챗에서 변태 분석 개발기
PDF
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
PDF
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
PDF
Golang 으로 vision api 적용하기
PPTX
Angular2를 위한 타입스크립트
PDF
10월의 하늘_2016_진도 공공도서관_이지호
PPTX
Angular2를 위한 컴포넌트 분석과 개발
PPTX
Angular2를 활용한 컴포넌트 중심의 개발
KZO eLearning Webinar July 18, 2012
La pescuit
Linked deck 7 12
Zemsania
เกณฑ์การประเมิน
아챗에서 변태 분석 개발기
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
Golang 으로 vision api 적용하기
Angular2를 위한 타입스크립트
10월의 하늘_2016_진도 공공도서관_이지호
Angular2를 위한 컴포넌트 분석과 개발
Angular2를 활용한 컴포넌트 중심의 개발
Ad

Similar to Ruby 2 array_hash (20)

PPTX
Sicp 2.2 계층 구조 데이터와 닫힘 성질
PDF
Python Programming: Type and Object
PDF
RPG Maker와 Ruby로 코딩 시작하기 Day 3
PDF
알고리즘과 자료구조
PDF
2012 Dm B3 보고서(10백지원)
PDF
2012 Dm B3 보고서(10백지원)
PDF
2012 Dm B3 보고서(06박찬흥)
PDF
2012 Dm B3 보고서(10백지원)
PDF
Algorithms summary korean
DOCX
이산치수학 Project2
PDF
2012 Ds 01
PDF
DS_04
PDF
Project#2말의여행 Hwp
PPT
Python3 brief summary
PDF
[D2CAMPUS] Algorithm tips - ALGOS
PDF
자료구조 트리 보고서
PDF
2012 Ds 06
PDF
프로젝트#6 (오탈자 검사)보고서
PDF
자구4번
DOCX
자료구조 Project2
Sicp 2.2 계층 구조 데이터와 닫힘 성질
Python Programming: Type and Object
RPG Maker와 Ruby로 코딩 시작하기 Day 3
알고리즘과 자료구조
2012 Dm B3 보고서(10백지원)
2012 Dm B3 보고서(10백지원)
2012 Dm B3 보고서(06박찬흥)
2012 Dm B3 보고서(10백지원)
Algorithms summary korean
이산치수학 Project2
2012 Ds 01
DS_04
Project#2말의여행 Hwp
Python3 brief summary
[D2CAMPUS] Algorithm tips - ALGOS
자료구조 트리 보고서
2012 Ds 06
프로젝트#6 (오탈자 검사)보고서
자구4번
자료구조 Project2
Ad

Ruby 2 array_hash

  • 1. 입문자를 위한 루비 2. 배열과 해시
  • 2. 배열 • 배열이란 객체로의 참조를 차례로 나타낸 것이다. ★ 배열의 요소는 ‘객체’ 그 자체가 아닌 ‘객 체로의 참조’ 이다. 따라서 변경하면 실제 값도 변화해서 보임
  • 3. 배열의 생성 • 요소를 그대로 나열 하고 양옆으로 대괄호 [, ]를 씌우면 생성 • 같은 자료형일 필요 없음 a=1 b = “str” c = [ a, b, 3, “문자열”] #=> [1, “str”, 3, “문자열”] • 경우에 따라 객체를 포함하는 배열 그 자체도 요소가 될 수 있다. d = [a , c, [1, 2, 3]] #=> [1, [1, “str”, 3, “문자열”], [1,2,3,]]
  • 4. 첨자 참조 • 배열의 요소는 ‘0’부터 시작하는 인덱스로 접근이 가능하다. ★ 음의 첨자가 존재함 c[-1] #=> c[c.length-1]과 같음 c[-5] #=> nil 반환(범위 밖)
  • 5. 길이를 포함한 첨자 • 번호 n 다음에 요소의 개수 m을 지정 - n부터 m개의 요소를 가진 새로운 배열 객체를 생성하여 반환 p c[1,2] #=> [“str”, 3] p c[1,3] #=> [“str”, 3, “문자열”]
  • 6. 범위 첨자 • 범위식에 의한 참조 p c[0..1] #=> [1, “str”] 최종요소 포함 p c[0...1] #=> [1] 최종요소 불포함 • 음의 첨자도 사용 가능 p c[-2..3] #=> [3, “문자열”] p c[-guatda.com/cmx.p2...3] #=> [3]
  • 7. 첨자 대입 • 첨자대입을 이용하여 배열 내용을 갱신 가능 a = [1, 2] a[0] = 3 #=> [3, 2] a[4] = “4” #=> [3, 2, nil, nil, “4”] a[0, 3] = ‘a’, ‘b’, ‘c’ #=> [“a”, “b”, “c”, nil, “4”] a[0, 3] = ‘a’, ‘b’, ‘c’, ‘d’ #=> [“a”, “b”, “c”, “d”, nil, “4”] a[0, 2] = “?” #=> [“?”, 2, “d”, nil, “4”]
  • 8. 첨자 대입 • 첨자대입을 이용하여 배열 내용을 갱신 가능 a = [1, 2] a[0] = 3 #=> [3, 2] a[4] = “4” #=> [3, 2, nil, nil, “4”] a[0, 3] = ‘a’, ‘b’, ‘c’ #=> [“a”, “b”, “c”, nil, “4”] a[0, 3] = ‘a’, ‘b’, ‘c’, ‘d’ #=> [“a”, “b”, “c”, “d”, nil, “4”] 0부터 3개 < 입력된 요소는 4개 => 개수 확장 후 대입 a[0, 2] = “?” #=> [“?”, 2, “d”, nil, “4”]
  • 9. 첨자 대입 • 첨자대입을 이용하여 배열 내용을 갱신 가능 a = [1, 2] a[0] = 3 #=> [3, 2] a[4] = “4” #=> [3, 2, nil, nil, “4”] a[0, 3] = ‘a’, ‘b’, ‘c’ #=> [“a”, “b”, “c”, nil, “4”] a[0, 3] = ‘a’, ‘b’, ‘c’, ‘d’ #=> [“a”, “b”, “c”, “d”, nil, “4”] 0부터 3개 < 입력된 요소는 4개 => 개수 확장 후 대입 0부터 2개 > 입력된 요소 1개 a[0, 2] = “?” #=> [“?”, 2, “d”, nil, “4”] => 개수 축소 후 대입
  • 10. 배열 비교 • 대응하는 요소가 모두 동일할 경우에 한해 서만 같다. arr1 = [1, 2, “str”] arr2 = [1, 2, “str”] arr1 == arr2 #=> true arr1 == [“str”, 1, 2] #=> false
  • 11. 블록 구문 메소드와 iterator • 반복처리를 추상화한 iterator라는 메소드 • 대표적으로 each가 있음 array = [“a”, “b”, “c”] array.each do |item| print item + “ “ #=> a b c end
  • 12. each_with_index array.each_with_index do |item, index| p [item, index] end #=> [“a”, 0] [“b”, 1] [“c”, 2]
  • 13. 사상(map) acids = [“Adenin”, “Thymine”, “Guanine”, “Cytosine”] signs = acids.map{|acid| acid[0,1] } p signs #=> [“A”, “T”, “G”, “C”]
  • 14. 정렬(sort) array = [“73”, “2”, “5”, “1999”, “53”] • 사전식 정렬 p array.sort #=> [“1999”, “2” , “5”, “53”, “73”] • 숫자로 변환, 비교해서 정렬 p array.sort{|x,y| x.to_i <=> y.to_i} #=> [“2”, “5”, “53”, “73”, “1999”]
  • 15. 선택 • # 3학년 (person.grade가 3인 학생)만을 모은다. student.select{|person| person.grade == 3}
  • 16. 해시 • 임의의 객체를 키(key)를 이용해 다른 객체 에 대응시키는 컨테이너 객체 month_to_ordinal = { “Jan” => 1, “Feb” => 2, “Mar” => 3 ... } p month_to_ordinal[“Mar”] #=> 3
  • 17. 해시 생성 • 리터럴 기법으로 생성한다. 중괄호 내에 키 (key)와 값(value)의 대응관계를 나열하면 요소를 포함하는 해시가 생성됨 prefix = “yahoo-” abbreviation = { “CAT” => “Condensed-Abridged Tiger”, “Yapomb” => prefix + “womb”, “pilk” => prefix + “milk” }
  • 18. 첨자 연산식 • 해시에서 첨자참조는 키가 되는 객체를 넘 겨서 값을 반환하는 방법을 이용한다. book_to_author = { “Ruby in Nutshell” => “Flanagan” } p book_to_author[“Ruby in Nutshell”] #=> “Flanagan” p book_to_author[“Ruby in Nutshell”] = [“Flanagan”, “Martz”]
  • 19. Enumerable 모듈 • Enumerable은 each 메소드로부터 도출 가 능한 메소드를 모아놓은 모듈이다. • Enumerable::Enumberator는 each 이외 의 iterator에 기반해서 Enumerable의 기 능을 제공하는 클래스다.

Editor's Notes

  • #2: \n
  • #3: \n
  • #4: \n
  • #5: \n
  • #6: \n
  • #7: \n
  • #8: &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB294; 3, &amp;#xADF8;&amp;#xB7EC;&amp;#xB098; &amp;#xC694;&amp;#xC18C;&amp;#xB294; 4&amp;#xC774;&amp;#xBBC0;&amp;#xB85C; &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB97C; &amp;#xBC97;&amp;#xC5B4;&amp;#xB09C; &amp;#xBD80;&amp;#xBD84;&amp;#xC5D0; &amp;#xB300;&amp;#xD574;&amp;#xC11C;&amp;#xB294; &amp;#xD655;&amp;#xC7A5; &amp;#xD6C4; &amp;#xB300;&amp;#xC785;&amp;#xD55C;&amp;#xB2E4;.\n
  • #9: &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB294; 3, &amp;#xADF8;&amp;#xB7EC;&amp;#xB098; &amp;#xC694;&amp;#xC18C;&amp;#xB294; 4&amp;#xC774;&amp;#xBBC0;&amp;#xB85C; &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB97C; &amp;#xBC97;&amp;#xC5B4;&amp;#xB09C; &amp;#xBD80;&amp;#xBD84;&amp;#xC5D0; &amp;#xB300;&amp;#xD574;&amp;#xC11C;&amp;#xB294; &amp;#xD655;&amp;#xC7A5; &amp;#xD6C4; &amp;#xB300;&amp;#xC785;&amp;#xD55C;&amp;#xB2E4;.\n
  • #10: &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB294; 3, &amp;#xADF8;&amp;#xB7EC;&amp;#xB098; &amp;#xC694;&amp;#xC18C;&amp;#xB294; 4&amp;#xC774;&amp;#xBBC0;&amp;#xB85C; &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB97C; &amp;#xBC97;&amp;#xC5B4;&amp;#xB09C; &amp;#xBD80;&amp;#xBD84;&amp;#xC5D0; &amp;#xB300;&amp;#xD574;&amp;#xC11C;&amp;#xB294; &amp;#xD655;&amp;#xC7A5; &amp;#xD6C4; &amp;#xB300;&amp;#xC785;&amp;#xD55C;&amp;#xB2E4;.\n
  • #11: &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB294; 3, &amp;#xADF8;&amp;#xB7EC;&amp;#xB098; &amp;#xC694;&amp;#xC18C;&amp;#xB294; 4&amp;#xC774;&amp;#xBBC0;&amp;#xB85C; &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB97C; &amp;#xBC97;&amp;#xC5B4;&amp;#xB09C; &amp;#xBD80;&amp;#xBD84;&amp;#xC5D0; &amp;#xB300;&amp;#xD574;&amp;#xC11C;&amp;#xB294; &amp;#xD655;&amp;#xC7A5; &amp;#xD6C4; &amp;#xB300;&amp;#xC785;&amp;#xD55C;&amp;#xB2E4;.\n
  • #12: &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB294; 3, &amp;#xADF8;&amp;#xB7EC;&amp;#xB098; &amp;#xC694;&amp;#xC18C;&amp;#xB294; 4&amp;#xC774;&amp;#xBBC0;&amp;#xB85C; &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB97C; &amp;#xBC97;&amp;#xC5B4;&amp;#xB09C; &amp;#xBD80;&amp;#xBD84;&amp;#xC5D0; &amp;#xB300;&amp;#xD574;&amp;#xC11C;&amp;#xB294; &amp;#xD655;&amp;#xC7A5; &amp;#xD6C4; &amp;#xB300;&amp;#xC785;&amp;#xD55C;&amp;#xB2E4;.\n
  • #13: &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB294; 3, &amp;#xADF8;&amp;#xB7EC;&amp;#xB098; &amp;#xC694;&amp;#xC18C;&amp;#xB294; 4&amp;#xC774;&amp;#xBBC0;&amp;#xB85C; &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB97C; &amp;#xBC97;&amp;#xC5B4;&amp;#xB09C; &amp;#xBD80;&amp;#xBD84;&amp;#xC5D0; &amp;#xB300;&amp;#xD574;&amp;#xC11C;&amp;#xB294; &amp;#xD655;&amp;#xC7A5; &amp;#xD6C4; &amp;#xB300;&amp;#xC785;&amp;#xD55C;&amp;#xB2E4;.\n
  • #14: &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB294; 3, &amp;#xADF8;&amp;#xB7EC;&amp;#xB098; &amp;#xC694;&amp;#xC18C;&amp;#xB294; 4&amp;#xC774;&amp;#xBBC0;&amp;#xB85C; &amp;#xC785;&amp;#xB825;&amp;#xD558;&amp;#xB824;&amp;#xB294; &amp;#xBC94;&amp;#xC704;&amp;#xB97C; &amp;#xBC97;&amp;#xC5B4;&amp;#xB09C; &amp;#xBD80;&amp;#xBD84;&amp;#xC5D0; &amp;#xB300;&amp;#xD574;&amp;#xC11C;&amp;#xB294; &amp;#xD655;&amp;#xC7A5; &amp;#xD6C4; &amp;#xB300;&amp;#xC785;&amp;#xD55C;&amp;#xB2E4;.\n
  • #15: \n
  • #16: \n
  • #17: \n
  • #18: \n
  • #19: \n
  • #20: \n
  • #21: \n
  • #22: \n
  • #23: \n
  • #24: \n