Gibt es eine wörtliche Notation für eine Reihe von Symbolen?


170

Ich mag diesen wörtlichen Ausdruck für eine Reihe von Zeichenfolgen:

%w( i can easily create arrays of words )

Ich frage mich, ob es ein Literal gibt, um eine Reihe von Symbolen zu erhalten. Ich weiß, dass ich es kann

%w( it is less elegant to create arrays of symbols ).map( &:to_sym )

aber es wäre so wunderbar, nur ein wörtliches Wort zu verwenden.


Dieser Ansatz wäre schöner, als nur eine Reihe von Symbolen zu erstellen? Oder eine einfache Methode? Meh.
— Dave Newton

Worum geht es in diesem Fall überhaupt bei der %wNotation?
— m_x

IMO ist ein Array von Symbolen weniger überladen als ein Array von Zeichenfolgen und im Allgemeinen weniger verbreitet. YMMV.
— Dave Newton

<troll> scheint, dass das Ruby-Team mir seit Ruby 2 zugestimmt hat ... </
— control

3
Mögliches Duplikat von Array von Symbolen erstellen
— sjakobi

Antworten:


277

Ja! Dies ist jetzt in Ruby 2.0.0 möglich. Eine Möglichkeit, es zu schreiben, ist:

%i{foo bar}  # => [:foo, :bar]

Sie können auch andere Trennzeichen verwenden, um auch zu schreiben %i(foo bar)oder %i!foo bar!zum Beispiel.

Diese Funktion wurde ursprünglich hier angekündigt:

http://www.ruby-lang.org/zh_TW/news/2012/11/02/ruby-2-0-0-preview1-released/

Es wird in der offiziellen Dokumentation von Ruby hier erwähnt:

http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings


3
danke, @ MarcelJackwerth hat es bereits in einem Kommentar zu der zuvor akzeptierten Antwort angegeben, aber ich werde deine für die Nachwelt akzeptieren.
— m_x

3
Beachten Sie, dass wie bei anderen Modifikatoren eine Reihe anderer Trennzeichen verwendet werden können. zB %i[foo bar], %i{foo bar}, %i!foo bar!, %i%foo bar%.
— user664833

1
Wenn Sie die Unterstützung dafür in TextMate oder Sublime Text hervorheben möchten, lesen Sie meine geänderte .tmLanguage-Datei in dieser Übersicht .
— Ben Kreeger

1
Laut Rubocop wird empfohlen, %i[foo bar]
— Mapad

26

In Ruby 1.x ist die Liste der verfügbaren % -Deimiter leider begrenzt

Modifier    Meaning
%q[ ]       Non-interpolated String (except for \\ \[ and \])
%Q[ ]       Interpolated String (default)
%r[ ]       Interpolated Regexp (flags can appear after the closing delimiter)
%s[ ]       Non-interpolated Symbol
%w[ ]       Non-interpolated Array of words, separated by whitespace
%W[ ]       Interpolated Array of words, separated by whitespace
%x[ ]       Interpolated shell command

Schade ... danke für den Link und die Liste. wusste nicht %x, scheint besser lesbar als die Backticks-Notation, die ich benutze
— m_x

3
Nun, nicht so unglücklich für diejenigen, die die vorhandenen kaum im Kopf behalten können (das wäre ich).
— tokland

26
In Ruby 2.0 erhalten wir% i für Symbol-Arrays, siehe: ruby-lang.org/zh_TW/news/2012/11/02/…
— Marcel Jackwerth
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.