Bir dizi sembol için gerçek bir gösterim var mı?


170

Bir dizeler dizisi için bu değişmez ifadeyi seviyorum:

%w( i can easily create arrays of words )

Bir dizi sembol almak için bir değişmez olup olmadığını merak ediyorum. Yapabileceğimi biliyorum

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

ancak bir değişmez kelimeyi kullanmak harika olurdu.


Bu yaklaşım sadece bir dizi sembol yaratmaktan daha hoş olur mu? Yoksa basit bir yöntem mi? Meh.
Dave Newton

bu durumda, %wgösterimin anlamı nedir?
m_x

IMO bir dizi sembol zaten bir dizi diziden daha az karmaşıktır ve genellikle daha az yaygındır. YMMV.
Dave Newton

<troll> yakut takımın yakut 2'den beri benimle aynı fikirde olduğu anlaşılıyor ... </troll>
m_x

Yanıtlar:


277

Evet! Bu artık Ruby 2.0.0'da mümkün. Yazmanın bir yolu:

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

Diğer sınırlayıcıları da kullanabilirsiniz, böylece %i(foo bar)veya %i!foo bar!örneğin yazabilirsiniz .

Bu özellik ilk olarak burada açıklandı:

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

Ruby'nin resmi belgelerinde burada belirtilmiştir:

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


3
teşekkürler, @ MarcelJackwerth daha önce kabul edilen cevap üzerine bir yorumda belirtti, ancak ben senin kibarlık için kabul edeceğim.
m_x

3
Diğer değiştiricilerde olduğu gibi, bir dizi başka sınırlayıcının kullanılabileceğini unutmayın. örneğin %i[foo bar], %i{foo bar}, %i!foo bar!, %i%foo bar%.
user664833


1
rubocop göre , kullanılması tavsiye edilir%i[foo bar]
Mapad

26

Ruby 1.x'te maalesef mevcut % -delimiters listesi sınırlıdır

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

çok kötü ... bağlantı ve liste için teşekkürler. bilmiyordum %x, kullandığım backticks gösterimi daha okunabilir görünüyor
m_x

3
Şey, mevcut olanları kafalarında zar zor tutabilenler için çok talihsiz değil (bu ben olurum).
tokland

26
Ruby 2.0'da sembol dizileri için% i elde edeceğiz, bkz: ruby-lang.org/zh_TW/news/2012/11/02/…
Marcel Jackwerth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.