Ruby'de karma karmalarının oluşturulması, uygun iki (veya daha fazla) boyutlu arama yapılmasına olanak tanır. Ancak, birini eklerken daima ilk indeksin karmada var olup olmadığını kontrol etmelisiniz. Örneğin:Ruby'de Hashes Idiom'un Hashes?
h = Hash.new
h['x'] = Hash.new if not h.key?('x')
h['x']['y'] = value_to_insert
Yeni Hash otomatik olarak oluşturulur nerede aşağıdakileri yapmak tercih olacaktır: Benzer şekilde
h = Hash.new
h['x']['y'] = value_to_insert
, ilk endeks zaten var olmayan bir değer aranırken, '[]' hatası için tanımlanmamış bir yöntem almak yerine nil döndürülürse tercih edilebilir.
looked_up_value = h['w']['z']
biri bu davranışı vardır, ancak bu işin gerçekleştirilmesi için mevcut bir Ruby deyim vardır bir Hash sarıcı sınıf oluşturabilir? Tabii
h = Hash.new { |h, k| h[k] = Hash.new }
, bu yinelemeli yapılabilir:
karma var mı belirli bir derinlikten sonra 0 dönecek olan karma deyimlerden mi? (Ben bir şeyler sayıyorum ve kullanıyorum h [: foo] [: bar] [: baz] + = 1) –