Ruby 해시란 무엇입니까?
해시는 UNIQUE 키-값 쌍의 형태로 데이터를 저장하는 데 사용되는 데이터 구조입니다. 배열과 달리 숫자 인덱스가 없으며 키를 사용하여 해시 값에 액세스합니다.
예: :
- 국가 이름 및 해당 국가 코드 목록(예:ES ⇾ Spain)
- 모든 단어에 가능한 정의 목록이 있는 사전
- 도메인 이름 및 IP 주소
Ruby 프로그램에서 해시를 사용하면 올바른 상황에서 사용할 때 코드 속도를 높일 수 있습니다.
즉 :
키 및 관련 값으로 데이터를 그룹화할 수 있는 사전과 같은 형식(또는 변환할 수 있는) 데이터가 있습니다.
해시 생성 방법
알겠습니다.
우리는 해시가 무엇인지에 대한 일반적인 아이디어를 얻었지만 어떻게 생성합니까?
좋아요 :
{}
빈 해시입니다!
3개의 키/값 쌍이 있는 해시는 다음과 같습니다. :
{ a: 1, b: 2, c: 3 }
a
키이고 1
해당 키에 해당하는 값입니다. 키-값 쌍은 쉼표로 구분됩니다.
지금 :
일반적인 해시 방법으로 Ruby 프로젝트에서 해시를 사용하는 방법을 살펴보겠습니다.
루비 해시에 값 저장
이미 본 것처럼 초기 값 세트로 해시를 생성할 수 있습니다.
다음은 또 다른 예입니다. :
fruits = { coconut: 1, apple: 2, banana: 3 }
또 다른 옵션은 기존 해시에 새 값을 추가하는 것입니다.
좋아요 :
fruits[:orange] = 4
이것은 :orange
입니다. 해시 키로 4
해당 값으로.
:orange
단어 앞에 콜론이 있는 이유는 무엇입니까? 값에 접근할 때 &단어 orange:
뒤에 해시를 생성할 때? 해시 로켓(=>
) 기호는 유효하지만 오래된 방식입니다.
값은 모든 Ruby 개체일 수 있습니다.
포함 :
- 문자열
- 정수 및 부동 소수점
- 배열
키는 무엇이든 될 수 있지만 기호(예::banana
) 및 문자열은 가장 일반적인 유형의 키입니다.
기억하세요...
키는 고유하며 :orange
하나만 가질 수 있습니다. 키 또는 하나의 :apple
키.
동일한 키를 두 번 추가하면 값이 변경됩니다.
해시에서 값에 액세스하는 방법
키로 해시에 액세스합니다.
값에 직접 액세스해야 하는 경우 해시가 데이터에 적합한 구조가 아닐 수 있습니다.
예 :
fruits[:orange] # 4
이것이 해시의 요점입니다. 신속하게 키로 항목을 조회하는 것입니다. .
키가 없으면 nil
이 표시됩니다. .
fruits[:peach] # nil
대안으로 fetch
를 사용할 수 있습니다. 메소드를 사용하여 기본값을 제공할 수 있습니다.
예 :
fruits.fetch(:peach, 0)
fetch
를 사용하는 경우 기본값(두 번째 인수)이 없으면 Ruby는 KeyError
를 발생시킵니다. 예외.
어떤 키가 누락되었는지 알 수 있기 때문에 유용합니다.
두 개의 루비 해시를 병합하는 방법
두 개의 해시를 가져와 새 해시로 병합할 수 있습니다.
어떤 방식으로 수행되나요?
글쎄, 이것을 추측하는 것은 어렵지 않습니다. 메소드 이름은 merge
입니다. .
사용 방법은 다음과 같습니다. :
defaults = { a: 1, b: 2, c: 3 } preferences = { c: 4 } defaults.merge!(preferences) # {:a=>1, :b=>2, :c=>4}
키는 고유하기 때문에 , 새 값이 이전 값을 덮어씁니다.
사용자가 자신의 해시를 전달하여 재정의할 수 있는 "기본" 해시 생성과 같은 흥미로운 솔루션에 이 사실을 사용할 수 있습니다.
키 병합 방법을 더 자세히 제어해야 하는 경우 블록을 전달할 수 있습니다.
좋아요 :
defaults.merge!(preferences) { |key, old, new| [old, new].max }
old
위치 defaults
에서 가져온 값입니다. , 및 new
preferences
에서 가져온 값입니다. .
하나의 키에 대한 여러 값
사전에서…
단어는 고유하지만 여러 값을 가질 수 있습니다(정의 ) 관련되어 있습니다.
Ruby에서 할 수 있습니다!
예 :
dictionary = { opportunity: [ "a set of circumstances that makes it possible to do something", "a situation or condition favorable for attainment of a goal" ], creativity: [ "the use of imagination or original ideas to create something new", "the ability to create", "the process where new ideas emerge from combining existing ideas in new ways" ] } dictionary[:creativity][1]
dictionary[:creativity]
배열 및 [1]
제공 해당 배열의 두 번째 요소를 제공합니다.
즉 :
키는 기호이고 값은 배열입니다. 해시에 액세스하면 다른 배열과 마찬가지로 정상적으로 액세스하는 배열을 다시 가져옵니다.
해시 정렬 방법
배열을 정렬할 수 있습니다. 하지만 해시도 정렬할 수 있다는 사실을 알고 계셨습니까?
sort
할 때 해시, 키로 정렬됩니다.
예 :
{ b: 1, a: 2 }.sort # [[:a, 2], [:b, 1]]
하지만 값을 기준으로 정렬할 수도 있습니다. :
{ c: 3, b: 1, a: 2 }.sort_by(&:last)
해시를 정렬하여 얻은 결과가 다른 해시가 아님을 알 수 있습니다...
배열입니다!
그러나 to_h
를 사용하여 이 배열을 다시 해시로 변환할 수 있습니다. 방법.
해시에서 모든 키 및 값 가져오기
모든 해시 키 목록을 원하신다면 희소식입니다. 방법이 있습니다!
여기 :
{ apple: 1, banana: 2 }.keys # [:apple, :banana]
값을 포함하는 배열을 제공하는 방법도 있습니다. :
{ apple: 1, banana: 2 }.values # [1, 2]
키가 해시에 존재하는지 알고 싶다면 배열을 가져오는 대신 key?
를 사용하세요. 방법.
이 메서드는 true
를 반환합니다. 또는 false
가치.
요약
키-값 쌍으로 구성된 유용한 데이터 구조인 Ruby 해시에 대해 배웠습니다. 또한 키로 해시에 액세스하는 방법과 새 데이터를 해시에 저장하는 방법도 배웠습니다.
이제 irb(또는 pry)를 열고 해시로 게임을 시작하세요!
읽어주셔서 감사합니다 🙂