Ein verschachteltes Array oder ein Hash als Empfänger und ein Objekt als Argument vorausgesetzt, was ist der beste Weg, um den Pfad zu einem Vorkommen des Objekts zurückzugeben, wenn der Empfänger das Objekt enthält, oder nil
? Ich definiere Pfad als ein Array von Array-Indizes oder Hash-Schlüssel, die zu dem Objekt führt. Das Argument-Objekt wird niemals einer der Hash-Schlüssel sein und wird niemals mehr als einmal erscheinen. Zum Beispiel habe ich erwarten:Pfad zu einem eingebetteten Objekt
[
:a,
[:b, :c, {:d => :foo}],
:e,
]
.path_to(:foo) # => [1, 2, :d]
{
:a => [3, "foo"],
:b => 5,
:c => 2,
}
.path_to(3) # => [:a, 0]
Wenn kein Auftreten, Rückkehr nil
:
[:foo, "hello", 3]
.path_to(:bar) => nil
Wenn niemand mit einer angemessenen Antwort kommt, dann werde ich kurz meine eigene Antwort posten.
@ toro2k Ich habe es nicht viel geschrieben. – sawa
Der Rückgabewert * muss * ein Array sein? wäre zum Beispiel nicht ': c' genug? es muss "[: c]" sein? – Agis
@sawa Schöne Frage .. Ich habe Verwirrung. wird es im zweiten Beispiel "[: a, 0]" oder "[: a, 1]" sein? –