루비 해시


Hash는 "key" => "value"와 같은 키-값 쌍의 모음입니다. 해시는 인덱싱이 숫자 사용에만 국한되지 않는다는 점을 제외하면 배열과 유사합니다.

해시의 인덱스(또는 "키")는 거의 모든 객체가 될 수 있습니다.

해시는 배열과 유사하지만 중요한 차이점이 있습니다. 즉, 해시의 요소에는 특정 순서가 없습니다. 순서가 중요하다면 배열을 사용하세요.

해시 만들기

배열과 마찬가지로 해시를 만드는 방법도 다양합니다. new 클래스 메소드를 통해 빈 해시를 생성할 수 있습니다:

months = Hash.new

new를 사용하여 기본값이 있는 해시를 생성할 수도 있습니다. 기본값이 없는 해시는 nil:

months = Hash.new( "month" )

或

months = Hash.new "month"

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

#!/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"]

다음은 공개 해시 방법입니다(hash가 해시 개체라고 가정).

일련번호방법 및 설명
1hash == other_hash
두 해시의 키-값 쌍 수가 동일한지, 키-값 쌍이 서로 일치하는지 확인하여 결정하세요. 두 해시의 숫자가 동일한지 여부입니다.
2hash.[key]
키를 사용하여 해시의 값을 참조하세요. 키를 찾을 수 없으면 기본값이 반환됩니다.
3hash.[key]=value
value에서 제공한 값을 key에서 제공한 키와 연결합니다.
4hash.clear
해시에서 모든 키-값 쌍을 제거합니다.
5hash.default(key = nil)
hash의 기본값을 반환하거나 default=를 통해 설정되지 않은 경우 nil을 반환합니다. (hash에 키가 없으면 []는 기본값을 반환합니다.)
6hash.default = obj
hash에 대한 기본값을 설정합니다.
7hash.default_proc
hash이 블록을 통해 생성된 경우 해당 블록을 반환합니다.
8hash.delete(key) [또는]
array.delete(key) { |key| block }

key를 통해 hash에서 키-값 쌍을 삭제합니다. 블록이 사용되고 일치하는 키-값 쌍이 없으면 블록 결과가 반환됩니다. 이것을 delete_if와 비교해 보세요.
9hash.delete_if { |key,value| block }
block이 true인 각 블록에 대해 hash에서 키-값 쌍을 삭제합니다.
10hash.each { |key,value| block }
hash를 반복하면서 각 key에 대해 한 번씩 블록을 호출하고 키-값을 2개 요소 배열로 전달합니다.
11hash.each_key { |key| block }
hash를 반복하여 각 key에 대해 한 번씩 블록을 호출하고 key를 인수로 전달합니다.
12hash.each_key { |key_value_array| block }
Traverse hash, 각 key에 대해 블록을 한 번 호출하고 keyvalue를 매개변수로 전달합니다.
13hash.each_value { |value| block }
hash를 반복하여 각 key에 대해 블록을 한 번씩 호출하고 value를 인수로 전달합니다.
14hash.empty?
해시가 비어 있는지(키-값 쌍을 포함하지 않음) 확인하고 true 또는 false를 반환합니다.
15hash.fetch(key [, 기본값] ) [또는]
hash.fetch(key) { | 키 블록 }

주어진 key를 사용하여 hash에서 값을 반환합니다. key가 없고 다른 매개변수가 제공되지 않으면 IndexError 예외가 발생합니다. default가 제공되면 default가 반환됩니다. 선택적 블록이 지정되면 블록의 결과가 반환됩니다.
16hash.has_key?(키) [또는] hash.include?(키) [또는]
hash.key?(키) [또는] hash.member?(키)

확인 지정된 key가 해시에 존재하는지 여부에 따라 true 또는 false를 반환합니다.
17hash.has_value?(값)
해시에 지정된 이 포함되어 있는지 확인합니다.
18hash.index(value)
지정된 value에 대한 해시의 key를 반환하거나, 일치하는 값이 없으면 nil을 반환합니다.
19hash.indexes(keys)
주어진 키의 값으로 구성된 새로운 배열을 반환합니다. 찾을 수 없는 키에는 기본값이 삽입됩니다. 이 방법은 더 이상 사용되지 않습니다. 선택을 사용하세요.
20hash.indices(keys)
주어진 키의 값으로 구성된 새로운 배열을 반환합니다. 찾을 수 없는 키에는 기본값이 삽입됩니다. 이 방법은 더 이상 사용되지 않습니다. 선택을 사용하세요.
21hash.inspect
해시의 인쇄된 문자열 버전을 반환합니다.
22hash.invert
hash를 생성하여 hashkeysvalues를 반전시킵니다. 즉, 새 해시에서는 hash의 키가 값이 되고, 해당 값은 키가 됩니다.
23hash.keys
hash의 키를 사용하여 새 배열을 만듭니다. /td>
24hash.length
hash의 크기나 길이를 정수로 반환합니다.
25hash.merge(other_hash) [또는]
hash.merge(other_hash) { |key, oldval, newval| block }

hashother_hash를 포함하는 새 해시를 반환합니다. 해시 및 other_hash의 중복 키를 사용하여 키-값 쌍을 다시 작성합니다.
26hash.merge!(other_hash) [또는]
hash.merge!(other_hash) { |key, oldval, newval| block }

병합과 동일하지만 실제로 해시가 변경되었습니다.
27hash.rehash
key의 현재 값을 기준으로 hash를 다시 빌드합니다. 이 방법은 삽입 이후 값이 변경된 경우 hash를 다시 색인화합니다.
28hash.reject { |key, value| block }
true에 대해 block의 각 키-값 쌍에 대해 새로운 hash를 생성합니다.
29hash.reject! { |key, value| block }
reject와 동일하지만 실제로 해시가 변경됩니다.
30hash.replace(other_hash)
hash 콘텐츠를 other_hash 콘텐츠로 바꿉니다.
31hash.select { |key, value| block }
blocktrue를 반환하는 hash의 키-값 쌍으로 구성된 새 배열을 반환합니다.
32hash.shift
hash에서 키-값 쌍을 제거하고 키-값 쌍을 두 요소 배열로 반환합니다.
33hash.size
size 또는 hash의 길이를 정수로 반환합니다.
34hash.sort
hash를 키-값 쌍의 배열을 포함하는 2차원 배열로 변환한 다음 정렬합니다.
35hash.store(key, value)
hash에 키-값 쌍을 저장합니다.
36hash.to_a
해시에서 2차원 배열을 만듭니다. 각 키-값 쌍은 배열로 변환되고 이러한 배열은 모두 배열에 저장됩니다.
37hash.to_hash
hash(자체)를 반환합니다.
38hash.to_s
hash을 배열로 변환한 다음 배열을 문자열로 변환합니다.
39hash.update(other_hash) [또는]
hash.update(other_hash) {|key, oldval, newval|block}

hashother_hash를 포함하는 새 해시를 반환합니다. , hashother_hash의 중복 키를 사용하여 키-값 쌍을 다시 작성합니다.
40hash.value?(value)
hash에 주어진 value가 포함되어 있는지 확인합니다.
41hash.values
hash의 모든 값을 포함하는 새 배열을 반환합니다.
42hash.values_at(obj, ...)
주어진 키와 관련된 hash의 값을 포함하는 새 배열을 반환합니다.