루비-해시

Hash는 "employee"=> "salary"와 같은 키-값 쌍의 모음입니다. 인덱싱이 정수 인덱스가 아닌 모든 객체 유형의 임의 키를 통해 수행된다는 점을 제외하면 Array와 유사합니다.

키 또는 값으로 해시를 순회하는 순서는 임의적으로 보일 수 있으며 일반적으로 삽입 순서에 포함되지 않습니다. 존재하지 않는 키를 사용하여 해시에 액세스하려고하면 메서드는 nil 을 반환 합니다.

해시 만들기

배열과 마찬가지로 해시를 만드는 다양한 방법이 있습니다. 새로운 클래스 메소드 로 빈 해시를 만들 수 있습니다.

months = Hash.new

new 를 사용하여 기본값으로 해시를 만들 수도 있습니다. 그렇지 않으면 nil입니다 .

months = Hash.new( "month" )

or

months = Hash.new "month"

기본값이있는 해시의 키에 액세스 할 때 키 또는 값이 존재하지 않는 경우 해시에 액세스하면 기본값이 반환됩니다.

#!/usr/bin/ruby

months = Hash.new( "month" )

puts "#{months[0]}"
puts "#{months[72]}"

이것은 다음 결과를 생성합니다-

month
month

#!/usr/bin/ruby

H = Hash["a" => 100, "b" => 200]

puts "#{H['a']}"
puts "#{H['b']}"

이것은 다음 결과를 생성합니다-

100
200

Ruby 객체를 키나 값, 심지어 배열로 사용할 수 있으므로 다음 예제는 유효한 것입니다.

[1,"jan"] => "January"

해시 내장 메서드

Hash 메서드를 호출하려면 Hash 개체의 인스턴스가 필요합니다. 우리가 본 것처럼 다음은 Hash 객체의 인스턴스를 만드는 방법입니다.

Hash[[key =>|, value]* ] or

Hash.new [or] Hash.new(obj) [or]
Hash.new { |hash, key| block }

그러면 주어진 객체로 채워진 새 해시가 반환됩니다. 이제 생성 된 객체를 사용하여 사용 가능한 모든 인스턴스 메서드를 호출 할 수 있습니다. 예를 들면-

#!/usr/bin/ruby

$, = ", "
months = Hash.new( "month" )
months = {"1" => "January", "2" => "February"}

keys = months.keys
puts "#{keys}"

이것은 다음 결과를 생성합니다-

["1", "2"]

다음은 공개 해시 방법입니다 ( 해시 가 배열 객체 라고 가정 )-

Sr. 아니. 방법 및 설명
1

hash == other_hash

두 해시가 동일한 수의 키-값 쌍이 있는지 여부와 키-값 쌍이 각 해시의 해당 쌍과 일치하는지 여부에 따라 두 해시가 같은지 테스트합니다.

2

hash.[key]

키를 사용하여 해시의 값을 참조합니다. 키를 찾을 수없는 경우 기본값을 반환합니다.

hash.[key] = value

에 의해 주어진 값에 관련 에 의해 주어진 키와 키를 .

4

hash.clear

해시에서 모든 키-값 쌍을 제거합니다.

5

hash.default(key = nil)

hash 의 기본값을 반환하고 default =로 설정되지 않은 경우 nil 을 반환합니다 . ([] 키가 hash에 없으면 기본값을 반환합니다 .)

6

hash.default = obj

hash 의 기본값을 설정합니다 .

7

hash.default_proc

해시 가 블록에 의해 생성 된 경우 블록을 반환합니다 .

8

hash.delete(key) [or]

array.delete(key) { |key| block }

에서 키 - 값 쌍 삭제합니다 해시키를 . 블록을 사용하는 경우 쌍이 없으면 블록의 결과를 반환합니다. delete_if를 비교하십시오 .

9

hash.delete_if { |key,value| block }

블록이 true로 평가되는 모든 쌍에 대해 해시 에서 키-값 쌍을 삭제 합니다 .

10

hash.each { |key,value| block }

hash를 반복 하여 각 키에 대해 블록을 한 번씩 호출하고 키-값을 요소를 2 개 가진 배열로 전달합니다.

11

hash.each_key { |key| block }

hash를 반복 하여 각 키에 대해 한 번씩 블록을 호출하고 를 매개 변수로 전달 합니다 .

12

hash.each_key { |key_value_array| block }

hash를 반복 하여 각 에 대해 한 번씩 블록을 호출 하고 을 매개 변수로 전달합니다 .

13

hash.each_key { |value| block }

hash를 반복 하여 각 에 대해 한 번씩 블록을 호출하고 을 매개 변수로 전달 합니다 .

14

hash.empty?

해시가 비어 있는지 (키-값 쌍이 포함되어 있지 않음) 테스트하여 true 또는 false를 반환 합니다 .

15

hash.fetch(key [, default] ) [or]

hash.fetch(key) { | key | block }

주어진 키에 대한 해시 값을 반환합니다 . 는 IF 키를 발견하고 다른 인수가 없을 수 없습니다, 그것은 제기 IndexError의 예외; 경우 기본이 주어집니다, 그것은 반환; 선택적 블록이 지정되면 그 결과가 반환됩니다.

16

hash.has_key?(key) [or] hash.include?(key) [or]

hash.key?(key) [or] hash.member?(key)

주어진 가 해시에 존재 하는지 여부를 테스트하여 true 또는 false를 반환 합니다 .

17

hash.has_value?(value)

해시가 주어진 값을 포함하는지 테스트합니다 .

18

hash.index(value)

주어진 에 대한 를 해시로 반환합니다 . 일치하는 값이 없으면 nil 을 반환합니다 .

19

hash.indexes(keys)

주어진 키에 대한 값으로 구성된 새 배열을 반환합니다. 찾을 수없는 키에 대한 기본값을 삽입합니다. 이 메서드는 더 이상 사용되지 않습니다. 선택을 사용하십시오.

20

hash.indices(keys)

주어진 키에 대한 값으로 구성된 새 배열을 반환합니다. 찾을 수없는 키에 대한 기본값을 삽입합니다. 이 메서드는 더 이상 사용되지 않습니다. 선택을 사용하십시오.

21

hash.inspect

예쁜 인쇄 문자열 버전의 해시를 반환합니다.

22

hash.invert

새로 생성 된 해시 반전, 해시 ; 즉, 새로운 해시에서 키 해시 될 값과 값은 키가됩니다.

23

hash.keys

hash의 키를 사용하여 새 배열을 만듭니다 .

24

hash.length

해시 의 크기 또는 길이를 정수로 반환합니다 .

25

hash.merge(other_hash) [or]

hash.merge(other_hash) { |key, oldval, newval| block }

의 내용을 포함하는 새로운 해시 반환 해시other_hash 에서 그와 중복 키 해시, 덮어 쌍을 other_hash을 .

26

hash.merge!(other_hash) [or]

hash.merge!(other_hash) { |key, oldval, newval| block }

병합과 동일하지만 제자리에서 변경됩니다.

27

hash.rehash

재 구축의 해시 각의 현재 값을 기준으로 . 값이 삽입 된 후 변경된 경우이 메서드는 hash를 다시 색인화 합니다.

28

hash.reject { |key, value| block }

블록참으로 평가되는 모든 쌍에 대해 새 해시 를 만듭니다.

29

hash.reject! { |key, value| block }

reject 와 동일 하지만 변경 사항이 적용됩니다.

30

hash.replace(other_hash)

의 내용에 옮겨 놓습니다 해시 의 내용으로 other_hash을 .

31

hash.select { |key, value| block }

블록true를 반환 하는 해시 의 키-값 쌍으로 구성된 새 배열을 반환 합니다 .

32

hash.shift

hash 에서 키-값 쌍을 제거하여 요소를 2 개 가진 배열로 반환합니다.

33

hash.size

해시크기 또는 길이를 정수로 반환합니다 .

34

hash.sort

해시 를 키-값 쌍의 배열을 포함하는 2 차원 배열로 변환 한 다음 배열로 정렬합니다.

35

hash.store(key, value)

키-값 쌍을 hash에 저장합니다 .

36

hash.to_a

해시에서 2 차원 배열을 만듭니다. 각 키 / 값 쌍은 배열로 변환되고 이러한 모든 배열은 포함하는 배열에 저장됩니다.

37

hash.to_hash

해시 (자체)를 반환합니다 .

38

hash.to_s

변환 된 해시 배열은 다음에 그 문자열 배열로 변환한다.

39

hash.update(other_hash) [or]

hash.update(other_hash) {|key, oldval, newval| block}

의 내용을 포함하는 새로운 해시 반환 해시other_hash 에 덮어 쓰기 쌍을 해시 에서 그와 중복 키 other_hash을 .

40

hash.value?(value)

해시 가 주어진 값을 포함 하는지 테스트합니다 .

41

hash.values

hash의 모든 값을 포함하는 새 배열을 반환합니다 .

42

hash.values_at(obj, ...)

주어진 키와 관련된 해시 의 값을 포함하는 새 배열을 반환 합니다.