루비-해시
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, ...) 주어진 키와 관련된 해시 의 값을 포함하는 새 배열을 반환 합니다. |