Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby Hash – 정의, 예제 및 방법:궁극적인 가이드

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)를 열고 해시로 게임을 시작하세요!

읽어주셔서 감사합니다 🙂