"% w" ist meine übliche Antwort an Leute, die etwas zu übermütig über die Lesbarkeit von Ruby werden. Funktioniert jedes Mal.
Craig Stuntz
Jetzt hast du eine noch bessere Antwort :-)
Errata
6
Als irrelevante Randnotiz verwirrte mich die URL für diese Frage eine Weile, während die Seite geladen wurde.
Fund Monica Klage
Antworten:
233
% w Anführungszeichen wie einfache Anführungszeichen ''(keine variable Interpolation, weniger Escape-Sequenzen), während% W Anführungszeichen wie doppelte Anführungszeichen sind "".
irb(main):001:0> foo="hello"=>"hello"
irb(main):002:0>%W(foo bar baz #{foo})=>["foo","bar","baz","hello"]
irb(main):003:0>%w(foo bar baz #{foo})=>["foo","bar","baz","\#{foo}"]
Ihr Beispiel zeigt auch doppelte Anführungszeichen für% w. Ist es richtig?
Foton
Ja. Beim Drucken der Ausgabe verwendet Ruby immer doppelte Anführungszeichen und maskiert Zeichen wie #. '#{foo}'und "\#{foo}"geben Sie die gleiche Zeichenfolge, die Sie mit überprüfen können '#{foo}' == "\#{foo}"in irb.
Brian Campbell
Es ist auf den ersten Blick etwas verwirrend, aber danke für die Erklärung.
Foton
29
Eine Anwendung, die ich für% W vs% w gefunden habe:
greetings =%W(hi hello #{"how do you do"})# => ["hi", "hello", "how do you do"]
Obwohl es sich um einen alten Beitrag handelt, taucht die Frage immer wieder auf und die Antworten scheinen mir nicht immer klar zu sein. Also, hier sind meine Gedanken.
% G und% W sind Beispiele für allgemein begrenzte Eingabetypen , die auf Arrays beziehen. Es gibt andere Typen, die% q,% Q,% r,% x und% i umfassen.
Der Unterschied zwischen Groß- und Kleinschreibung besteht darin, dass wir Zugriff auf die Funktionen von einfachen und doppelten Anführungszeichen erhalten. Mit einfachen Anführungszeichen und Kleinbuchstaben% w haben wir keine Code-Interpolation (z. B. # {someCode}) und einen begrenzten Bereich funktionierender Escape-Zeichen (z. B. \, \ n). Mit doppelten Anführungszeichen und Großbuchstaben% W machen wir das Zugang zu diesen Funktionen.
Das verwendete Trennzeichen kann ein beliebiges Zeichen sein, nicht nur die offene Klammer. Spielen Sie mit den obigen Beispielen, um dies zu sehen.
Das ist ein guter Artikel. Mir war nicht klar, dass Sie Zeichenfolgen oder andere Dinge auf die gleiche Weise erstellen können und die einschließenden Zeichen beliebig sein können. Zum Beispiel%w&readable af&
Antworten:
% w Anführungszeichen wie einfache Anführungszeichen
''
(keine variable Interpolation, weniger Escape-Sequenzen), während% W Anführungszeichen wie doppelte Anführungszeichen sind""
.quelle
#
.'#{foo}'
und"\#{foo}"
geben Sie die gleiche Zeichenfolge, die Sie mit überprüfen können'#{foo}' == "\#{foo}"
inirb
.Eine Anwendung, die ich für% W vs% w gefunden habe:
quelle
greetings = %w(hi hello how\ do\ you\ do)
% W führt normale doppelte Anführungszeichen durch. % w nicht.
quelle
Obwohl es sich um einen alten Beitrag handelt, taucht die Frage immer wieder auf und die Antworten scheinen mir nicht immer klar zu sein. Also, hier sind meine Gedanken.
% G und% W sind Beispiele für allgemein begrenzte Eingabetypen , die auf Arrays beziehen. Es gibt andere Typen, die% q,% Q,% r,% x und% i umfassen.
Der Unterschied zwischen Groß- und Kleinschreibung besteht darin, dass wir Zugriff auf die Funktionen von einfachen und doppelten Anführungszeichen erhalten. Mit einfachen Anführungszeichen und Kleinbuchstaben% w haben wir keine Code-Interpolation (z. B. # {someCode}) und einen begrenzten Bereich funktionierender Escape-Zeichen (z. B. \, \ n). Mit doppelten Anführungszeichen und Großbuchstaben% W machen wir das Zugang zu diesen Funktionen.
Das verwendete Trennzeichen kann ein beliebiges Zeichen sein, nicht nur die offene Klammer. Spielen Sie mit den obigen Beispielen, um dies zu sehen.
Eine vollständige Beschreibung mit Beispielen für% w und die vollständige Liste, Escapezeichen und Trennzeichen finden Sie unter: http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed .html
Kennzeichen
quelle
%w&readable af&
Dokumentation für Prozentzeichenfolgen: http://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Percent+Strings
quelle
%W
wird für Array-Elemente in doppelten Anführungszeichen verwendet, wie%Q
z.%w
wird für Array-Elemente in einfachen Anführungszeichen wie verwendet%q
.quelle
Gleich wie
%w
ist ein Abkürzungssymbol für das Anführungszeichen der Zeichenfolge!quelle