2016-10-31 2 views
0

Ich habe Array, mit dem Namen a und definieren Sie mit [1, 2, 3].Wie verwende ich ein rekursives Array?

Als nächstes Ich schob es auf sich selbst:

a = [1, 2, 3] 
a << a 

und das Ergebnis, das ich bekommen ist:

#=> [1, 2, 3, [...]] 

Als ich das letzte Element array mit a.last zu bekommen, erhalte ich:

a.last 
#=> [1, 2, 3, [...]] 
#even 
a.last.last.last 
#=> [1, 2, 3, [...]] 

Was passiert, wenn wir Array auf sich selbst drücken?

Ja, ich verstehe, dass dies ein rekursives Array erstellen sollte, aber was können wir damit tun?

+5

* "was wir damit machen können" * - Kaffee machen, wenn Sie genug '.last' tippen und die CPU genug Wärme erzeugen lässt ...? Ich bin mir nicht sicher, welche Art von Antwort Sie hier erwarten ... – deceze

+0

Ich wusste nicht, Ruby behandelt es so gut :) –

+1

@deceze Ich meine, vielleicht kann jemand 'rekursives Array' in realen Arbeitsbeispielen verwenden –

Antwort

2

In Ruby-Variablen sind Array-Elemente usw. Objektverweise. Also, wenn Sie a = [1, 2, 3] tun, wird es ein Array irgendwo im Speicher und die a Variable ist eine Referenz zu diesem Speicher. Jetzt, wenn Sie a << a tun, wird a[4] auch eine Referenz zu diesem Objekt sein. In der Tat enthält a jetzt einen Verweis auf sich.

1
a = [1, 2, 3] 
a << a.dup 
a.last 
=> [1, 2, 3] 
a.last.last 
=> 3 

Vielleicht ist das, was Sie wollten. Dies fügt einfach ein Array [1, 2, 3] als letztes Element des Arrays ein. In der Art und Weise, wie Sie es getan haben, haben Sie am Ende des Arrays eine Referenz eingefügt, die rekursiv wird.

Verwandte Themen