Ich schaue mir gerade die Dokumentation für FileUtils an.
Die folgende Zeile verwirrt mich:
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
Was bedeutet die %w
bedeuten? Können Sie mir einen Hinweis auf die Dokumentation geben?
Ich schaue mir gerade die Dokumentation für FileUtils an.
Die folgende Zeile verwirrt mich:
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
Was bedeutet die %w
bedeuten? Können Sie mir einen Hinweis auf die Dokumentation geben?
%w(foo bar)
ist eine Abkürzung für ["foo", "bar"]
. Das heißt, es ist eine Notation, um ein Array von Strings zu schreiben, die durch Leerzeichen anstelle von Kommas und ohne Anführungszeichen voneinander getrennt sind. Eine Liste von Möglichkeiten, Literale zu schreiben, finden Sie unter zenspider's quickref .
Ich denke an %w()
als "Wort-Array" - die Elemente sind durch Leerzeichen voneinander getrennt, und es wird ein Array von Zeichenketten zurückgegeben.
%w()
Array von Zeichenketten%r()
regulärer Ausdruck.%q()
String%x()
ein Shell-Befehl (der die Ausgabezeichenfolge zurückgibt)%i()
Array von Symbolen (Ruby >= 2.0.0)%s()
Symbol%()
(ohne Buchstabe) Abkürzung für %Q()
Die Begrenzungszeichen (
y )
kann durch eine Vielzahl von Varianten ersetzt werden, wie z.B. [
y ]
, |
, !
, usw.
Bei Verwendung eines Großbuchstabens %W()
können Sie die String-Interpolation verwenden #{variable}
ähnlich wie bei der "
y '
String-Begrenzer. Diese Regel gilt auch für alle anderen %-Literale.
abc = 'a b c'
%w[1 2#{abc} d] #=> ["1", "2\#{abc}", "d"]
%W[1 2#{abc} d] #=> ["1", "2a b c", "d"]
Außerdem gibt es %s
mit dem Sie zum Beispiel beliebige Symbole erstellen können:
%s|some words| #Same as :'some words'
%s[other words] #Same as :'other words'
%s_last example_ #Same as :'last example'
Seit Ruby 2.0.0 haben Sie auch:
%i( a b c ) # => [ :a, :b, :c ]
%i[ a b c ] # => [ :a, :b, :c ]
%i_ a b c _ # => [ :a, :b, :c ]
# etc...
%W
y %w
können Sie ein Array von Zeichenketten erstellen, ohne Anführungszeichen und Kommas zu verwenden.
Obwohl es sich um einen alten Beitrag handelt, taucht die Frage immer wieder auf und die Antworten scheinen mir nicht immer klar zu sein, daher hier meine Gedanken:
%w
y %W
sind Beispiele für allgemein abgegrenzte Eingaben Typen die sich auf Arrays beziehen. Es gibt andere Typen, die Folgendes umfassen %q
, %Q
, %r
, %x
y %i
.
Der Unterschied zwischen der Version mit Groß- und Kleinbuchstaben besteht darin, dass sie uns Zugang zu den Funktionen von einfachen und doppelten Anführungszeichen gibt. Mit einfachen Anführungszeichen und (Kleinbuchstaben) %w
haben wir keine Code-Interpolation ( #{someCode}
) und eine begrenzte Anzahl von Escape-Zeichen, die funktionieren ( \\
, \n
). Mit doppelten Anführungszeichen und (Großbuchstaben) %W
wir faire Zugang zu diesen Funktionen haben.
Als Begrenzungszeichen kann ein beliebiges Zeichen verwendet werden, nicht nur die offene Klammer. Spielen Sie mit den obigen Beispielen, um zu sehen, wie sich das auswirkt.
Für einen ausführlichen Bericht mit Beispielen von %w
und die vollständige Liste, Escape-Zeichen und Begrenzungszeichen, finden Sie unter " Ruby - %w gegen %W - Geheimnisse gelüftet! "
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
1 Stimmen
Ist damit Ihre Frage beantwortet? Was ist das %w "Ding" in Ruby?