Recommended 12 1. multi-dimensional array
Probabilistic data structures
Weird stuff with hashes.key
KZO eLearning Webinar July 18, 2012
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
Golang 으로 vision api 적용하기
10월의 하늘_2016_진도 공공도서관_이지호
Angular2를 활용한 컴포넌트 중심의 개발
Sicp 2.2 계층 구조 데이터와 닫힘 성질
Python Programming: Type and Object
RPG Maker와 Ruby로 코딩 시작하기 Day 3
More Related Content 12 1. multi-dimensional array
Probabilistic data structures
Weird stuff with hashes.key
Viewers also liked (14) KZO eLearning Webinar July 18, 2012
생각과 프로그램 개발 - 10월, 소프트웨어에 물들다
책을 쓰기 위한 환경과 책을 잘 쓰기 위한 도구(이렇게 책쓰면 성공...
Golang 으로 vision api 적용하기
10월의 하늘_2016_진도 공공도서관_이지호
Angular2를 활용한 컴포넌트 중심의 개발
Similar to Ruby 2 array_hash (20) Sicp 2.2 계층 구조 데이터와 닫힘 성질
Python Programming: Type and Object
RPG Maker와 Ruby로 코딩 시작하기 Day 3
Algorithms summary korean
[D2CAMPUS] Algorithm tips - ALGOS
Ruby 2 array_hash2. 배열
• 배열이란 객체로의 참조를 차례로 나타낸
것이다.
★ 배열의 요소는 ‘객체’ 그 자체가 아닌 ‘객
체로의 참조’ 이다. 따라서 변경하면 실제
값도 변화해서 보임
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
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: &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB294; 3, &#xADF8;&#xB7EC;&#xB098; &#xC694;&#xC18C;&#xB294; 4&#xC774;&#xBBC0;&#xB85C; &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB97C; &#xBC97;&#xC5B4;&#xB09C; &#xBD80;&#xBD84;&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB294; &#xD655;&#xC7A5; &#xD6C4; &#xB300;&#xC785;&#xD55C;&#xB2E4;.\n #9: &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB294; 3, &#xADF8;&#xB7EC;&#xB098; &#xC694;&#xC18C;&#xB294; 4&#xC774;&#xBBC0;&#xB85C; &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB97C; &#xBC97;&#xC5B4;&#xB09C; &#xBD80;&#xBD84;&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB294; &#xD655;&#xC7A5; &#xD6C4; &#xB300;&#xC785;&#xD55C;&#xB2E4;.\n #10: &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB294; 3, &#xADF8;&#xB7EC;&#xB098; &#xC694;&#xC18C;&#xB294; 4&#xC774;&#xBBC0;&#xB85C; &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB97C; &#xBC97;&#xC5B4;&#xB09C; &#xBD80;&#xBD84;&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB294; &#xD655;&#xC7A5; &#xD6C4; &#xB300;&#xC785;&#xD55C;&#xB2E4;.\n #11: &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB294; 3, &#xADF8;&#xB7EC;&#xB098; &#xC694;&#xC18C;&#xB294; 4&#xC774;&#xBBC0;&#xB85C; &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB97C; &#xBC97;&#xC5B4;&#xB09C; &#xBD80;&#xBD84;&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB294; &#xD655;&#xC7A5; &#xD6C4; &#xB300;&#xC785;&#xD55C;&#xB2E4;.\n #12: &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB294; 3, &#xADF8;&#xB7EC;&#xB098; &#xC694;&#xC18C;&#xB294; 4&#xC774;&#xBBC0;&#xB85C; &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB97C; &#xBC97;&#xC5B4;&#xB09C; &#xBD80;&#xBD84;&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB294; &#xD655;&#xC7A5; &#xD6C4; &#xB300;&#xC785;&#xD55C;&#xB2E4;.\n #13: &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB294; 3, &#xADF8;&#xB7EC;&#xB098; &#xC694;&#xC18C;&#xB294; 4&#xC774;&#xBBC0;&#xB85C; &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB97C; &#xBC97;&#xC5B4;&#xB09C; &#xBD80;&#xBD84;&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB294; &#xD655;&#xC7A5; &#xD6C4; &#xB300;&#xC785;&#xD55C;&#xB2E4;.\n #14: &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB294; 3, &#xADF8;&#xB7EC;&#xB098; &#xC694;&#xC18C;&#xB294; 4&#xC774;&#xBBC0;&#xB85C; &#xC785;&#xB825;&#xD558;&#xB824;&#xB294; &#xBC94;&#xC704;&#xB97C; &#xBC97;&#xC5B4;&#xB09C; &#xBD80;&#xBD84;&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB294; &#xD655;&#xC7A5; &#xD6C4; &#xB300;&#xC785;&#xD55C;&#xB2E4;.\n #15: \n #16: \n #17: \n #18: \n #19: \n #20: \n #21: \n #22: \n #23: \n #24: \n