Kann das Array in Ruby neu erfunden werden?

8

Dies ist nur eine hypothetische Frage. Wenn Sie die Klassen Array und Hash nicht hätten, wäre es möglich, eine Array-Klasse in reinem Ruby zu implementieren? Wie?

    
Geo 15.10.2009, 09:49
quelle

4 Antworten

11

Ja können wir!

%Vor%

Dies geschieht durch Erstellen von Instanzvariablen @ a0, @ a1 usw. auf dem Objekt, um die Array-Indizes 0, 1 usw. darzustellen. Es hat konstante Zeitlängen- und Indexoperationen. Der Rest der Operationen (Entfernen, etc.) ist ein bisschen mehr Aufwand zu implementieren, aber es ist absolut möglich.

Beachten Sie, dass die konstante Zeiteigenschaft für die Indexoperation von der zugrunde liegenden Ruby-Laufzeitumgebung abhängt, die eine geeignete Datenstruktur für Instanzvariablen verwendet.

    
Grandpa 15.10.2009, 12:23
quelle
3

Sie könnten eine verkettete Liste verwenden, die ineffizient, aber möglich wäre. Sie könnten auch einen Binärbaum verwenden (siehe obige Kommentare).

Ich denke, mein Punkt ist: Sie konnten kein vernünftiges Array ohne Sprachunterstützung der unteren Ebene bekommen. Die grundlegende Struktur, die ich im Ruby-Array nehme, ist ein C-Array (obwohl ich falsch liegen könnte). Bei solch einem fundamentalen Typ wird die Unterstützung auf niedrigerer Ebene für eine anständige Performance entscheidend sein.

    
Peter 15.10.2009 09:54
quelle
2

Sie können [] in jedes Objekt implementieren. Zum Beispiel:

%Vor%     
Sam Coles 15.10.2009 10:02
quelle
0

Sicher kannst du. Ruby ist eine Turing-vollständige Sprache. Sie können alles implementieren, das Sie in beliebige Sprache in Ruby implementieren können.

    
Jörg W Mittag 15.10.2009 11:04
quelle

Tags und Links