Ich suche nach einer besseren Möglichkeit, Variablen in Ruby zu einem String zusammenzuführen.
Zum Beispiel, wenn die Zeichenfolge ungefähr so lautet:
"Das animal
action
das second_animal
"
Und ich habe Variablen für animal
, action
und second_animal
, was ist die bevorzugte Art und Weise in diese Variablen zu setzen , um die Zeichenfolge?
Sie können die sprintf-ähnliche Formatierung verwenden, um Werte in die Zeichenfolge einzufügen. Dazu muss die Zeichenfolge Platzhalter enthalten. Fügen Sie Ihre Argumente in ein Array ein und verwenden Sie eine der folgenden Möglichkeiten: (Weitere Informationen finden Sie in der Dokumentation zu Kernel :: sprintf .)
Sie können die Argumentnummer sogar explizit angeben und ummischen:
Oder geben Sie das Argument mit Hash-Schlüsseln an:
Beachten Sie, dass Sie dem
%
Operator einen Wert für alle Argumente angeben müssen. Zum Beispiel können Sie das Definieren nicht vermeidenanimal
.quelle
Ich würde den
#{}
Konstruktor verwenden, wie in den anderen Antworten angegeben. Ich möchte auch darauf hinweisen, dass es hier eine echte Subtilität gibt, auf die man hier achten muss:Während Zeichenfolgen mit einfachen Anführungszeichen erstellt werden können (wie durch die Variablen
first_name
und gezeigtlast_name
, kann der#{}
Konstruktor nur in Zeichenfolgen mit doppelten Anführungszeichen verwendet werden.quelle
ist ein anderer Weg, es zu tun.
quelle
Dies wird als Zeichenfolgeninterpolation bezeichnet, und Sie tun dies folgendermaßen:
Wichtig: Es funktioniert nur, wenn sich die Zeichenfolge in doppelten Anführungszeichen ("") befindet.
Beispiel für Code, der nicht wie erwartet funktioniert:
quelle
Das Standard-ERB-Template-System funktioniert möglicherweise für Ihr Szenario.
quelle
Sie können es mit Ihren lokalen Variablen wie folgt verwenden:
@animal = "Dog"
@action = "licks"
@second_animal = "Bird"
"The #{@animal} #{@action} the #{@second_animal}"
Die Ausgabe wäre: "Der Hund leckt den Vogel "
quelle