String-Objekte enthalten geordnete Sequenzen von Bytes, normalerweise Zeichen, um für Menschen lesbare Textteile zu bilden. Sie sind ein in allen Programmiersprachen sehr verbreiteter Objekttyp, und Ruby bietet eine Reihe von Methoden auf hoher und niedriger Ebene, um String-Objekte zu erstellen, auf sie zuzugreifen und sie zu bearbeiten.
Zeichenfolgen werden am häufigsten mit a erstellt String-Literal. Ein Literal ist eine spezielle Syntax in der Sprache Ruby, die ein Objekt eines bestimmten Typs erstellt. Beispielsweise, 23 ist ein wörtliches Wort, das eine Fixnum Objekt. Für String-Literale gibt es mehrere Formen.
Die meisten Sprachen haben ein ähnliches String-Literal. Die Arten von Anführungszeichen, '(einfaches Anführungszeichen, Apostroph oder hartes Zitat) und "(doppelte Anführungszeichen oder weiches Zitat) werden verwendet, um Zeichenfolgenliterale einzuschließen, und alles dazwischen wird in Zeichenfolgenobjekte umgewandelt. Das folgende Beispiel zeigt dies.
Es gibt jedoch einige Unterschiede zwischen einfachen und doppelten Anführungszeichen. Doppelte Anführungszeichen oder weiche Anführungszeichen Ermöglichen Sie etwas Magie hinter den Kulissen. Am nützlichsten ist die Interpolation innerhalb von Strings, um den Wert einer Variablen in die Mitte eines Strings einzufügen. Dies wird durch die Verwendung von erreicht # … Reihenfolge. Das folgende Beispiel fragt Sie nach Ihrem Namen und begrüßt Sie. Fügen Sie Ihren Namen mithilfe der Interpolation in das gedruckte Zeichenfolgenliteral ein.
Beachten Sie, dass jeder Code in geschweiften Klammern stehen kann, nicht nur Variablennamen. Ruby wertet diesen Code aus und versucht, den zurückgegebenen Code in die Zeichenfolge einzufügen. Das könnte man genauso gut sagen "Hallo, # gets.chomp" und vergiss das Name Variable. Es wird jedoch empfohlen, keine langen Ausdrücke in die geschweiften Klammern zu setzen.
Einfache Anführungszeichen, Apostrophe oder harte Anführungszeichen sind viel restriktiver. Innerhalb der einfachen Anführungszeichen führt Ruby keine Interpolations- oder Escape-Sequenzen durch, außer dem einfachen Anführungszeichen und dem Backslash selbst (\ ' und \\ beziehungsweise). Wenn Sie keine Interpolation verwenden möchten, wird empfohlen, einfache Anführungszeichen häufiger als nicht zu verwenden.
Im folgenden Beispiel wird versucht, eine Variable in einfache Anführungszeichen zu interpolieren.
Wenn Sie dies ausführen, erhalten Sie keine Fehlermeldung, sondern was gedruckt wird?
Die Interpolationssequenz wurde nicht interpretiert.
Das ist eine Frage des Stils. Einige bevorzugen es, die ganze Zeit doppelte Anführungszeichen zu verwenden, es sei denn, sie werden unbequem. Andere verwenden lieber einfache Anführungszeichen, es sei denn, das Interpolationsverhalten ist beabsichtigt. Es ist nichts von Natur aus gefährlich Sie müssen immer doppelte Anführungszeichen verwenden, aber dadurch lässt sich ein Teil des Codes leichter lesen. Sie müssen beim Lesen von Code keine Zeichenfolge lesen, wenn Sie wissen, dass keine Interpolationen darin enthalten sind, da Sie wissen, dass die Zeichenfolge selbst keine Nebenwirkungen hat. Es liegt also an Ihnen, welche String-Literal-Form Sie verwenden. Hier gibt es keinen richtigen und falschen Weg.
Was ist, wenn Sie in einem String-Literal ein Anführungszeichen einfügen möchten? Zum Beispiel die Zeichenfolge "Steve sagte" Moo! " wird nicht funktionieren. Und keiner wird es tun "Kann das nicht berühren!". Diese beiden Zeichenfolgen enthalten das Anführungszeichen in der Zeichenfolge, wodurch das Zeichenfolgenliteral effektiv beendet und ein Syntaxfehler verursacht wird. Sie könnten Anführungszeichen wechseln, wie z 'Steve sagte "Moo!"', aber das löst das problem nicht wirklich. Stattdessen können Sie jedes Anführungszeichen in der Zeichenfolge maskieren und es verliert seine besondere Bedeutung (in diesem Fall besteht die besondere Bedeutung darin, die Zeichenfolge zu schließen)..
Um ein Zeichen zu verlassen, müssen Sie ihm den umgekehrten Schrägstrich voranstellen. Das Backslash-Zeichen weist Ruby an, jede spezielle Bedeutung des nächsten Zeichens zu ignorieren. Wenn es sich um ein übereinstimmendes Anführungszeichen handelt, beenden Sie die Zeichenfolge nicht. Wenn es sich um ein Hash-Zeichen handelt, darf kein Interpolationsblock gestartet werden. Das folgende Beispiel zeigt diese Verwendung von Backslash, um Sonderzeichen zu maskieren.
Das Backslash-Zeichen kann verwendet werden, um eine bestimmte Bedeutung aus dem folgenden Zeichen zu entfernen. Verwirrenderweise kann es auch verwendet werden, um ein bestimmtes Verhalten in Zeichenfolgen in doppelten Anführungszeichen zu kennzeichnen. Die meisten dieser besonderen Verhaltensweisen haben mit dem Einfügen von Zeichen und Bytefolgen zu tun, die weder eingegeben noch visuell dargestellt werden können. Nicht alle Zeichenfolgen sind Zeichenfolgen oder enthalten möglicherweise Steuersequenzen, die für das Terminal und nicht für den Benutzer bestimmt sind. Ruby gibt Ihnen die Möglichkeit, diese Arten von Zeichenfolgen mit dem umgekehrten Schrägstrich einzufügen.
Die meisten davon werden Sie wahrscheinlich nie verwenden, aber Sie wissen, dass sie existieren. Und denken Sie auch daran, dass sie nur in doppelten Anführungszeichen arbeiten.