English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 해시(Hash)

해시(Hash)는 "키" => "밸류"와 같은 키밸류 쌍 집합입니다. 해시는 배열과 유사하지만, 인덱스가 숫자로 제한되지 않습니다.

해시의 인덱스(또는 "키"라고도 합니다) 거의 어떤 객체든 될 수 있습니다.

Hash는 배열과 비슷하지만, Hash의 요소는 특정한 순서가 없습니다. 순서가 중요하다면 배열을 사용해야 합니다.

해시 생성

배열과 마찬가지로, 해시를 생성하는 방법은 여러 가지가 있습니다. 다음과 같이 생성할 수 있습니다: new 클래스 메서드로 빈 해시를 생성할 수 있습니다:

months = Hash.new

또한 new 기본 값을 가진 해시를 생성하면, 기본 값을 가지지 않는 해시는 nil

months = Hash.new("month")
 
또는
 
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"]

다음은 공용 해시 메서드입니다(고정된) 해시 Hash 객체입니다):

순번메서드 & 설명
1hash == other_hash
두 해시가 같은 키 값 쌍의 개수가 같은지, 키 값 쌍이 일치하는지 확인하여 두 해시가 같은지�断할 수 있습니다.
2hash[key]
키를 사용하여 해시에서 값을 참조합니다. 키를 찾지 못하면 기본 값이 반환됩니다.
3hash[key]=value
변환하여 value 지정된 값과 key 지정된 키에 연결됩니다.
4hash.clear
해시에서 모든 키-값 쌍을 제거합니다。
5hash.default(key = nil)
반환 해시 에 존재하지 않으면 nil을 반환합니다。) 해시 hash.default(key = nil)
6의 기본 값을 설정하면 nil을 반환합니다。(키가
에 존재하지 않으면 []을 통해 기본 값을 반환합니다。) 해시 hash.default = obj
7을 설정하여 기본 값을 설정합니다。
hash.default_proc 해시 블록을 사용하여 생성된 경우 블록을 반환합니다。
8hash.delete(key) [또는]
array.delete(key) { |key| block }

을 통해 key 부터 해시 에서 키-값 쌍을 제거합니다. 블록을 사용하고 일치하는 키-값 쌍을 찾지 못하면 블록의 결과를 반환합니다. 이를 delete_if 비교합니다。
9hash.delete_if { |key,value| block }
block이 true 각 block에서 해시 에서 키-값 쌍을 제거합니다。
10hash.each { |key,value| block }
순회 해시각각 key block을 한 번 호출하고-value를 두 요소 배열로 사용합니다.
11hash.each_key { |key| block }
순회 해시각각 key block을 한 번 호출하고 key 으로 매개변수로 사용합니다.
12hash.each_key { |key_value_array| block }
순회 해시각각 key block을 한 번 호출하고 keyvalue 으로 매개변수로 사용합니다.
13hash.each_value { |value| block }
순회 해시각각 key block을 한 번 호출하고 value 으로 매개변수로 사용합니다.
14hash.empty?
hash가 비어 있는지 확인합니다(키-값 쌍을 포함하지 않음),반환 true 또는 false
15hash.fetch(key [, default] ) [또는]
hash.fetch(key) { | key | block }

주어진 key 부터 해시 반환 값을 key이고 다른 매개변수를 제공하지 않으면 IndexError 에러를 반환합니다;default=을 통해 값을 제공하면 default이면 default선택적인 block이 지정되어 있으면 block의 결과를 반환합니다.
16hash.has_key?(key) [또는] hash.include?(key) [또는]
hash.key?(key) [또는] hash.member?(key)

주어진 key 해시에 존재하는지 확인하고 반환 true 또는 false
17hash.has_value?(value)
해시가 주어진 값을 포함하고 있는지 확인 value
18hash.index(value)
주어진 value 해시에서 key기본적으로 일치하는 값이 없으면 반환 nil
19hash.indexes(keys)
주어진 키의 값을 포함하는 새로운 배열을 반환합니다. 찾을 수 없는 키는 기본 값으로 추가됩니다. 이 메서드는 더 이상 사용되지 않으며 select를 사용하십시오.
20hash.indices(keys)
주어진 키의 값을 포함하는 새로운 배열을 반환합니다. 찾을 수 없는 키는 기본 값으로 추가됩니다. 이 메서드는 더 이상 사용되지 않으며 select를 사용하십시오.
21hash.inspect
해시의 출력 문자열 버전을 반환합니다.
22hash.invert
새로운 해시반대로 해시keysvalues따라서 새로운 해시에서,해시 의 키가 값이 되고, 값이 키가 됩니다.
23hash.keys
새로운 배열을 생성합니다. 해시 의 키.
24hash.length
정수 형식으로 반환 해시 의 크기나 길이.
25hash.merge(other_hash) [or]
hash.merge(other_hash) { |key, oldval, newval| block }

새로운 해시를 반환하고 있습니다. 해시other_hash 의 내용을, hash에서 other_hash 중복된 키를 가진 키-값 쌍.
26hash.merge!(other_hash) [or]
hash.merge!(other_hash) { |key, oldval, newval| block }

와 동일하지만, 실제로 해시가 변경됩니다.
27hash.rehash
각각의 key 의 현재 값을 다시 구축 해시만약 추가 후 값이 변경되면, 이 메서드는 재인덱싱을 수행합니다. 해시
28hash.reject { |key, value| block }
와 동일하지만, 복사된 해시에 작용합니다. hsh.dup.delete_if와 동일합니다.
29hash.reject! { |key, value| block }
와 동일하지만, 변경이 없으면 nil을 반환합니다.
30hash.replace(other_hash)
변환하여 해시 의 내용을 other_hash 의 내용을 포함합니다.
31hash.select { |key, value| block }
새로운 배열을 반환하며, block 반환 true해시 의 키밸류对人体로 구성됩니다.
32hash.shift
부터 해시 키밸류对人体 하나를 제거하고, 그 키밸류对人体를 두 요소 배열로 반환합니다.
33hash.size
정수 형식으로 반환 해시size 또는 length.
34hash.sort
변환하여 해시 키밸류对人体 배열을 포함한 이차원 배열로 변환한 후 정렬합니다.
35hash.store(key, value)
저장 해시 중 하나의 키밸류对人体.
36hash.to_a
해시에서 이차원 배열을 생성합니다. 각 키밸류对人体가 배열로 변환되어 모든 이러한 배열이 배열에 저장됩니다.
37hash.to_hash
반환 해시(self)
38hash.to_s
변환하여 해시 배열을 변환한 후 문자열로 변환합니다.
39hash.update(other_hash) [or]
hash.update(other_hash) {|key, oldval, newval| block}

새로운 해시를 반환하고 있습니다. 해시other_hash 의 내용을 다시 작성 해시 와 관련된 other_hash 중복된 키를 가진 키-값 쌍.
40hash.value?(value)
검사 해시 지정된 값이 포함되어 있는지 확인 value
41hash.values
새로운 배열을 반환하고 있으며, 포함하고 있습니다. 해시 의 모든 값.
42hash.values_at(obj, ...)
새로운 배열을 반환하고 있으며, 포함하고 있습니다. 해시 지정된 키와 관련된 값.