Ruby에서 해시 해시를 만들면 편리한 두 가지 (또는 그 이상의) 차원 검색이 가능합니다. 그러나 삽입 할 때 항상 첫 번째 인덱스가 해시에 이미 있는지 확인해야합니다. 예를 들어 :해시의 해시 관용구 루비?
h = Hash.new
h['x'] = Hash.new if not h.key?('x')
h['x']['y'] = value_to_insert
그것은 새로운 해시가 자동으로 생성되는 경우 다음을 수행하는 것이 바람직 할 것입니다 : 마찬가지로
h = Hash.new
h['x']['y'] = value_to_insert
, 첫 번째 인덱스가 존재하지 않는 값을 찾을 때, '[]'오류에 대해 정의되지 않은 메서드를받는 대신 nil이 반환되는 것이 좋습니다.
looked_up_value = h['w']['z']
이 동작을하는 Hash 래퍼 클래스를 만들 수는 있지만이 작업을 수행하기위한 기존 루비 관용구가 있습니까? 물론
h = Hash.new { |h, k| h[k] = Hash.new }
,이 재귀 적으로 수행 할 수 있습니다
해시가 있습니까 특정 깊이 이후에 0을 반환하는 해시 관용구? (저는 물건을 세고 h [: foo] [: bar] [: baz] + = 1) –