Ruby 2.3 führt eine neue Methode unter Array
und Hash
mit der Bezeichnung ein. Die Beispiele, die ich in Blog-Posts über die neue Version gesehen habe, sind gekünstelt und verworren:Wie verwende ich `Array # dig` und` Hash # dig`, die in Ruby 2.3 eingeführt wurden?
# Hash#dig
user = {
user: {
address: {
street1: '123 Main street'
}
}
}
user.dig(:user, :address, :street1) # => '123 Main street'
# Array#dig
results = [[[1, 2, 3]]]
results.dig(0, 0, 0) # => 1
Ich bin nicht dreifach verschachtelte flache Arrays. Was ist ein realistisches Beispiel dafür, wie das sinnvoll wäre?
UPDATE
Es stellt sich heraus, diese Methoden lösen eine der am häufigsten gestellten Fragen Rubin. Die Fragen haben unter so etwas wie 20 Duplikate, die alle durch Verwendung gelöst werden:
How to avoid NoMethodError for missing elements in nested hashes, without repeated nil checks?
Ruby Style: How to check whether a nested hash element exists
Sie analysiert nur einige json ein sehr realistisches Beispiel ist ... – ndn
@ ndn Die normale Verwendung 'user [: user] [: address] [: street1]' ist weniger Zeichen als 'user.dig (: user,: address,: street1)' und ergibt dasselbe Ergebnis. –
@JesseSielaff Sie sind nicht das Gleiche. '[] [] []' wird mit einem Fehler fehlschlagen, wenn einer der Schlüssel nicht existiert. 'dig' wird nicht fehlschlagen, es wird' nil' zurückgeben. – meagar