구 원트노/루비 기초

[루비 기초]5장 해쉬와 심볼

Hash(해쉬)

해쉬는 배열의 일종으로 배열의 인덱스로 문자열이나 심볼 등 임의 객체로 사용할 수 있습니다.
이를 키(key)라고 불립니다. 

Hash 생성

1
2
3
4
5
6
7
#해시 생성자 표기법
my_hash=Hash.new
my_hash["jake"= 10
my_hash["jane"= 20
 
#해시 리터럴 표시법
my_hash={"jake"=> 10"jane" => 20}
cs

해시 생성 방법으로는 크게 두가지 방법이 있습니다.

'해시 생성자 표기법'으로는 "해시이름[key] = value" 이 방식으로 기술합니다.

'해시 리터럴 표시법'은 {key => value}를 사용해서 기술합니다. 


Hash 요소 출력

1
2
3
4
my_hash={"jake"=> 10"jane" => 20}
 
puts my_hash["jake"# 10
puts my_hash["jane"# 20
cs

해쉬 안에 데이터를 꺼내오려면 

우리가 만든 키로 접근할 수 있습니다.


Hash 요소 변경, 추가, 삭제

1
2
3
4
5
my_hash={"jake"=> 10"jane" => 20}
 
my_hash["joo"= 30   # {"jake"=> 10, "jane" => 20,"joo" => 30 }
my_hash["jane"= 30  # {"jake"=> 10, "jane" => 30,"joo" => 30 }
my_hash.delete("joo"# {"jake"=> 10, "jane" => 30 }
cs

요소 추가와 변경은 앞에 사용한 '해쉬 생성자 표기법'을 사용합니다.

특정 키에 해당하는 값을 삭제하려면 delete메서드를 사용하면 됩니다.


심볼

':ruby' 처럼 앞에 콜론(:)을 붙인 문자열을 심볼이라고 불립니다.
심볼의 특징으로는 한 번 생성한 뒤에는 변경이 불가능하다는 부분과 
주어진 기간에 하나의 복사본을 사용하고, 문자열보다 빠르다는 점을 가집니다.

심볼 문법

1
2
my_first_symbol = :likemonkey   #o
my_first_symbol = :like monkey  #x
cs

심볼은 콜론(:)으로 시작됩니다.

그 다음은 문자이거나 _이어야 합니다.

그리고 심볼 이름 안에는 빈 공간이 존재하면 안됩니다.


심볼과 문자열 사이의 변환

1
2
:lion.to_s     # ==> "lion"
"lion".to_sym  # ==> :lion
cs

to_s메소드는 다른 객체를 메서드로 변환해줍니다.

to_sym은 문자열을 심볼로 변환해줍니다.


해쉬 + 심볼 예제

1
2
3
4
5
6
7
8
9
movies ={
    :primer  => "Awesome",
    :memento => "NOt as good"
}
 
movies ={
    primer: "Awesome",
    memento: "NOt as good"
}
cs

두 개의 해쉬는 같은 의미입니다. 

만약 키가 심볼이라면 ':primer =>'를 'primer:'로 줄일 수 있습니다.


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