क्या प्रतीकों की एक सरणी के लिए एक शाब्दिक अंकन है?


170

मुझे स्ट्रिंग की एक सरणी के लिए यह शाब्दिक अभिव्यक्ति पसंद है:

%w( i can easily create arrays of words )

मैं सोच रहा हूं कि क्या प्रतीकों की एक सरणी पाने के लिए एक शाब्दिक है। मुझे पता है कि मैं कर सकता हूं

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

लेकिन यह सिर्फ एक शाब्दिक का उपयोग करने के लिए बहुत अद्भुत होगा।


यह दृष्टिकोण केवल प्रतीकों की एक सरणी बनाने की तुलना में अच्छा होगा? या एक सरल विधि? भावहीन।
डेव न्यूटन

इस मामले में, %wअंकन की बात भी क्या है?
m_x

IMO प्रतीकों की एक सरणी पहले से ही तार की एक सरणी से कम बरबाद है, और आम तौर पर कम आम है। YMMV।
डेव न्यूटन

<ट्रोल> लगता है कि रूबी टीम रूबी 2 के बाद से मेरे साथ सहमत थी ... </ ट्रोल>
m_x

जवाबों:


277

हाँ! यह अब रूबी 2.0.0 में संभव है। इसे लिखने का एक तरीका यह है:

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

आप अन्य सीमांकक का भी उपयोग कर सकते हैं, इसलिए आप भी लिख सकते हैं %i(foo bar)या %i!foo bar!उदाहरण के लिए।

यह सुविधा मूल रूप से यहां घोषित की गई थी:

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

यह यहां रूबी के आधिकारिक दस्तावेज में उल्लिखित है:

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


3
धन्यवाद, @ MarcelJackwerth ने पहले ही पिछले स्वीकार किए गए उत्तर पर एक टिप्पणी में कहा था, लेकिन मैं तुम्हारा उत्तरोत्तर स्वीकार कर लूंगा।
m_x

3
ध्यान दें कि अन्य संशोधक की तरह, अन्य सीमांकक की एक श्रृंखला का उपयोग करना संभव है। जैसे %i[foo bar], %i{foo bar}, %i!foo bar!, %i%foo bar%
user664833

1
यदि आप TextMate या उदात्त पाठ में इसके लिए समर्थन को उजागर करना चाहते हैं, तो इस gist में मेरी संशोधित .tmLanguage फ़ाइल देखें
बेन क्रैगर

1
रुबोकॉप के अनुसार , इसका उपयोग करने की सलाह दी जाती है%i[foo bar]
मफद जूल

26

रूबी 1.x में, दुर्भाग्य से उपलब्ध % -delimiters की सूची सीमित है

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

बहुत बुरा ... लिंक और सूची के लिए धन्यवाद, यद्यपि। पता नहीं था %x,
बैकटिक्स

3
ठीक है, उन लोगों के लिए दुर्भाग्यपूर्ण नहीं है जो मौजूदा लोगों को अपने सिर में रख सकते हैं (जो कि मैं होगा)।
टोकन

26
रूबी 2.0 में हमें प्रतीक सरणियों के लिए% i मिलेगा, देखें: ruby-lang.org/zh_TW/news/2012/11/02/…
Marcel Jackwerth
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.