Ich bin wirklich neu in Ruby und ich versuche zu verstehen, ob es einen bestimmten Zeitpunkt gibt, zu dem ich ""
vs verwenden sollte ''
.
Ich habe die meiste Zeit einfache Anführungszeichen verwendet, weil es einfacher zu tippen ist, aber ich bin mir nicht sicher, ob ich sollte.
zB get 'user/new'
vs.get "user/new"
Antworten:
" "
Ermöglicht die Interpolation von Zeichenfolgen, z.quelle
Mit Ausnahme der Interpolation besteht ein weiterer Unterschied darin, dass die Escape-Sequenz nicht in einfachen Anführungszeichen funktioniert
quelle
'don\'t'
.puts '\\'
Es wird nur ein einziger Schrägstrich gedruckt. siehe hier stackoverflow.com/questions/25499046/…Um Ihre Frage zu beantworten, müssen Sie Folgendes verwenden,
""
wenn Sie eine Zeichenfolgeninterpolation durchführen möchten:Verwenden Sie ansonsten einfache Anführungszeichen.
Auch wenn Sie sich fragen, ob es einen Unterschied in der Leistung gibt, gibt es bei StackOverflow eine ausgezeichnete Frage dazu.
Und wenn Sie RoR noch nicht kennen, fordere ich Sie dringend auf, ein anständiges Ruby-Buch in die Hand zu nehmen, um die Grundlagen der Sprache zu erlernen. Es wird Ihnen helfen zu verstehen, was Sie tun (und Sie davon abhalten zu denken, dass Rails magisch ist). Ich persönlich empfehle The Well Grounded Rubyist .
quelle
In Ruby gibt es einen Unterschied zwischen einfachen
''
und doppelten Anführungszeichen""
in Bezug darauf, was als Zeichenfolge ausgewertet werden soll.Zunächst möchte ich klarstellen, dass in der Literalform eines Strings alles, was zwischen einfachen oder doppelten Anführungszeichen steht, als String-Objekt ausgewertet wird, das eine Instanz der Ruby String-Klasse ist.
Daher
'stackoverflow'
und"stackoverflow"
beide bewerten Instanzen der String-Klasse ohne Unterschied .Der Unterschied
Der wesentliche Unterschied zwischen den beiden wörtlichen Formen von Zeichenfolgen (einfache oder doppelte Anführungszeichen) besteht darin, dass doppelte Anführungszeichen Escape-Sequenzen zulassen, einfache Anführungszeichen jedoch nicht!
Ein durch einfache Anführungszeichen erstelltes Zeichenfolgenliteral unterstützt keine Zeichenfolgeninterpollation und entgeht keinen Sequenzen.
Ein gutes Beispiel ist:
wohingegen
Das Interpolieren mit einfachen Anführungszeichen funktioniert überhaupt nicht:
Beste Übung
Wie die meisten Ruby Linters empfehlen, verwenden Sie für Ihre Zeichenfolgen einfache Anführungszeichen und bei Interpolations- / Escape-Sequenzen die doppelten.
quelle
Beispiel für einen Escape-Code:
Interpolationsbeispiel:
quelle
Ähnlich wie bei der Antwort "\ n" beim Drucken ist das Folgende ein weiterer Fall des Unterschieds
Es sieht also so aus, als ob * in doppelte Anführungszeichen umgewandelt wurde, jedoch nicht in einfache Anführungszeichen. Übrigens wirkt sich dies auf die Ausgabe aus, wenn ein regulärer Ausdruck verwendet wird, z. B. str.gsub (/ regulärer Ausdruck /, '\ 1, \ 2').
quelle
Ein weiterer Grund, warum Sie einfache Anführungszeichen verwenden möchten, ist die Übergabe eines Regex-Musters als Zeichenfolge:
Dieses Regex-Muster funktioniert, da es in einfachen Anführungszeichen übergeben wird:
Dieses Regex-Muster schlägt fehl, weil es in doppelten Anführungszeichen übergeben wird (Sie müssten es doppelt maskieren, damit es funktioniert):
quelle
In diesem speziellen Fall spielt es keine Rolle, wie Sie es schreiben. Sie sind gleichwertig. Vielleicht möchten Sie auch einige weitere Ruby-Anleitungen / Tutorials lesen :)
quelle