루비 해시
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가 해시 개체라고 가정).
일련번호 | 방법 및 설명 |
---|---|
1 | hash == other_hash 두 해시의 키-값 쌍 수가 동일한지, 키-값 쌍이 서로 일치하는지 확인하여 결정하세요. 두 해시의 숫자가 동일한지 여부입니다. |
2 | hash.[key] 키를 사용하여 해시의 값을 참조하세요. 키를 찾을 수 없으면 기본값이 반환됩니다. |
3 | hash.[key]=value value에서 제공한 값을 key에서 제공한 키와 연결합니다. |
4 | hash.clear 해시에서 모든 키-값 쌍을 제거합니다. |
5 | hash.default(key = nil) hash의 기본값을 반환하거나 default=를 통해 설정되지 않은 경우 nil을 반환합니다. (hash에 키가 없으면 []는 기본값을 반환합니다.) |
6 | hash.default = obj hash에 대한 기본값을 설정합니다. |
7 | hash.default_proc hash이 블록을 통해 생성된 경우 해당 블록을 반환합니다. |
8 | hash.delete(key) [또는] array.delete(key) { |key| block } key를 통해 hash에서 키-값 쌍을 삭제합니다. 블록이 사용되고 일치하는 키-값 쌍이 없으면 블록 결과가 반환됩니다. 이것을 delete_if와 비교해 보세요. |
9 | hash.delete_if { |key,value| block } block이 true인 각 블록에 대해 hash에서 키-값 쌍을 삭제합니다. |
10 | hash.each { |key,value| block } hash를 반복하면서 각 key에 대해 한 번씩 블록을 호출하고 키-값을 2개 요소 배열로 전달합니다. |
11 | hash.each_key { |key| block } hash를 반복하여 각 key에 대해 한 번씩 블록을 호출하고 key를 인수로 전달합니다. |
12 | hash.each_key { |key_value_array| block } Traverse hash, 각 key에 대해 블록을 한 번 호출하고 key 및 value를 매개변수로 전달합니다. |
13 | hash.each_value { |value| block } hash를 반복하여 각 key에 대해 블록을 한 번씩 호출하고 value를 인수로 전달합니다. |
14 | hash.empty? 해시가 비어 있는지(키-값 쌍을 포함하지 않음) 확인하고 true 또는 false를 반환합니다. |
15 | hash.fetch(key [, 기본값] ) [또는] hash.fetch(key) { | 키 블록 } 주어진 key를 사용하여 hash에서 값을 반환합니다. key가 없고 다른 매개변수가 제공되지 않으면 IndexError 예외가 발생합니다. default가 제공되면 default가 반환됩니다. 선택적 블록이 지정되면 블록의 결과가 반환됩니다. |
16 | hash.has_key?(키) [또는] hash.include?(키) [또는] hash.key?(키) [또는] hash.member?(키) 확인 지정된 key가 해시에 존재하는지 여부에 따라 true 또는 false를 반환합니다. |
17 | hash.has_value?(값) 해시에 지정된 값이 포함되어 있는지 확인합니다. |
18 | hash.index(value) 지정된 value에 대한 해시의 key를 반환하거나, 일치하는 값이 없으면 nil을 반환합니다. |
19 | hash.indexes(keys) 주어진 키의 값으로 구성된 새로운 배열을 반환합니다. 찾을 수 없는 키에는 기본값이 삽입됩니다. 이 방법은 더 이상 사용되지 않습니다. 선택을 사용하세요. |
20 | hash.indices(keys) 주어진 키의 값으로 구성된 새로운 배열을 반환합니다. 찾을 수 없는 키에는 기본값이 삽입됩니다. 이 방법은 더 이상 사용되지 않습니다. 선택을 사용하세요. |
21 | hash.inspect 해시의 인쇄된 문자열 버전을 반환합니다. |
22 | hash.invert 새 hash를 생성하여 hash의 keys 및 values를 반전시킵니다. 즉, 새 해시에서는 hash의 키가 값이 되고, 해당 값은 키가 됩니다. |
23 | hash.keys hash의 키를 사용하여 새 배열을 만듭니다. /td> |
24 | hash.length hash의 크기나 길이를 정수로 반환합니다. |
25 | hash.merge(other_hash) [또는] hash.merge(other_hash) { |key, oldval, newval| block } hash 및 other_hash를 포함하는 새 해시를 반환합니다. 해시 및 other_hash의 중복 키를 사용하여 키-값 쌍을 다시 작성합니다. |
26 | hash.merge!(other_hash) [또는] hash.merge!(other_hash) { |key, oldval, newval| block } 병합과 동일하지만 실제로 해시가 변경되었습니다. |
27 | hash.rehash 각 key의 현재 값을 기준으로 hash를 다시 빌드합니다. 이 방법은 삽입 이후 값이 변경된 경우 hash를 다시 색인화합니다. |
28 | hash.reject { |key, value| block } true에 대해 block의 각 키-값 쌍에 대해 새로운 hash를 생성합니다. |
29 | hash.reject! { |key, value| block } 은 reject와 동일하지만 실제로 해시가 변경됩니다. |
30 | hash.replace(other_hash) hash 콘텐츠를 other_hash 콘텐츠로 바꿉니다. |
31 | hash.select { |key, value| block } block이 true를 반환하는 hash의 키-값 쌍으로 구성된 새 배열을 반환합니다. |
32 | hash.shift hash에서 키-값 쌍을 제거하고 키-값 쌍을 두 요소 배열로 반환합니다. |
33 | hash.size size 또는 hash의 길이를 정수로 반환합니다. |
34 | hash.sort hash를 키-값 쌍의 배열을 포함하는 2차원 배열로 변환한 다음 정렬합니다. |
35 | hash.store(key, value) 은 hash에 키-값 쌍을 저장합니다. |
36 | hash.to_a 해시에서 2차원 배열을 만듭니다. 각 키-값 쌍은 배열로 변환되고 이러한 배열은 모두 배열에 저장됩니다. |
37 | hash.to_hash 은 hash(자체)를 반환합니다. |
38 | hash.to_s hash을 배열로 변환한 다음 배열을 문자열로 변환합니다. |
39 | hash.update(other_hash) [또는] hash.update(other_hash) {|key, oldval, newval|block} hash 및 other_hash를 포함하는 새 해시를 반환합니다. , hash 및 other_hash의 중복 키를 사용하여 키-값 쌍을 다시 작성합니다. |
40 | hash.value?(value) hash에 주어진 value가 포함되어 있는지 확인합니다. |
41 | hash.values 은 hash의 모든 값을 포함하는 새 배열을 반환합니다. |
42 | hash.values_at(obj, ...) 주어진 키와 관련된 hash의 값을 포함하는 새 배열을 반환합니다. |