Warum sind die Argumente für File.new-Symbole nicht Zeichenfolgen?

9

Ich habe mich gefragt, warum die Leute, die die File -Bibliothek geschrieben haben, entschieden haben, die Argumente zu machen, die bestimmen, in welchem ​​Modus die Datei in Zeichenfolgen anstelle von Symbolen geöffnet wird.

Zum Beispiel ist es jetzt so:

%Vor%

Aber wäre es nicht ein besseres Design zu tun?

%Vor%

oder sogar

%Vor%

zum Beispiel? Dies scheint der perfekte Ort zu sein, um sie zu verwenden, da das Argument definitiv nicht veränderbar sein muss.

Ich bin daran interessiert zu wissen, warum es so herauskam.

Update: Ich habe gerade eine verwandte Frage zu Symbolen im Vergleich zu Strings gelesen, und ich denke, der Konsens war, dass Symbole einfach nicht so sind bekannt als Strings, und jeder ist gewohnt, Strings zu verwenden, um Hash-Tabellen trotzdem zu indizieren. Ich denke jedoch nicht, dass es für die Designer von Rubys Standardbibliothek gültig wäre, Unkenntnis über das Thema Symbole zu predigen, also glaube ich nicht, dass das der Grund ist.     
Seth Carnegie 24.09.2011, 21:03
quelle

2 Antworten

2

Ich bin kein Experte in der Geschichte von Ruby, aber Sie haben wirklich drei Optionen, wenn Sie Parameter für eine Methode wollen: Strings, Symbole und statische Klassen.

Beispiel für die Ausnahmebehandlung. Jede Ausnahme ist eigentlich eine Art von Klassenausnahme.

%Vor%

Du könntest also jede Erlaubnis für den Stream haben, dass es seine eigene Klasse ist. Aber das würde erfordern, dass noch mehr Klassen für das System generiert würden.

Die Sache mit Symbolen ist, dass sie niemals gelöscht werden. Jedes Symbol, das du generierst, bleibt unbegrenzt erhalten. Deshalb ist es wenig ratsam, die Methode '.to_sym' zu verwenden. Es führt zu Speicherlecks.

Strings sind nur einfacher zu manipulieren. Wenn Sie den Eingabemodus vom Benutzer erhalten, benötigen Sie irgendwo in Ihrem Code ein ".to_sym" oder zumindest eine große switch-Anweisung. Mit einer Zeichenkette können Sie die Benutzereingabe direkt an die Methode übergeben (wenn Sie natürlich so vertrauen).

Außerdem übergeben Sie in C ein Zeichen an die Datei-E / A-Methode. Es gibt keine Chars in Ruby, nur Strings. Wenn man sieht, wie Rubin auf C aufgebaut ist, könnte das sein, wo es herkommt.

    
Shayne Wheeler 29.09.2011, 23:00
quelle
1

Es ist einfach ein Relikt aus früheren Sprachen.

    
weexpectedTHIS 25.09.2011 18:20
quelle

Tags und Links