2009-03-27 13 views
129

क्या अंतर है?रूबी सरणी:% डब्ल्यू बनाम% डब्ल्यू

+13

"% w" उन लोगों के लिए मेरा सामान्य प्रतिरक्षा है जो रूबी की पठनीयता के बारे में बहुत कमजोर हो जाते हैं। हर समय काम करता है। –

+0

अब आपके पास एक बेहतर प्रतिक्रिया है :-) – errata

+4

एक अप्रासंगिक साइड नोट के रूप में, इस प्रश्न के यूआरएल ने थोड़ी देर के लिए मुझे भ्रमित कर दिया, जबकि पृष्ठ लोड हो रहा था। –

उत्तर

205

% उद्धरण जैसे एकल उद्धरण '' (कोई परिवर्तनीय इंटरपोलेशन, कम भागने अनुक्रम), जबकि% डब्ल्यू उद्धरण डबल कोट्स "" की तरह उद्धरण देते हैं।

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}"] 
+0

आपका उदाहरण% w के लिए भी डबल कोट दिखाता है। क्या यह सही है? – Foton

+0

हां। प्रिंटिंग आउटपुट करते समय, रूबी हमेशा डबल कोट्स का उपयोग करती है और '#' जैसे अक्षरों से बच जाती है। ''{{foo}'' और '" \ # {foo} "' आपको वही स्ट्रिंग दें, जिसे आप '# {foo}' == "\ # {foo}" '' irb' में सत्यापित कर सकते हैं । –

+0

यह पहली बार देखने पर थोड़ा उलझन में है, लेकिन स्पष्टीकरण के लिए धन्यवाद। – Foton

19

% डब्ल्यू सामान्य डबल कोट प्रतिस्थापन करता है। % डब्ल्यू नहीं करता है।

26

मैं डब्ल्यू बनाम% w% के लिए मिल गया है एक आवेदन:

greetings = %W(hi hello #{"how do you do"}) 
# => ["hi", "hello", "how do you do"] 
+0

साफ हैक, धन्यवाद! – akuhn

+9

हालांकि इस मामले में, केवल 'बधाई =% w (हाय हैलो कैसे करें \ do \ do करते हैं) करने के लिए यह संभव है। – dinjas

10

एक पुराने पोस्ट हालांकि, सवाल आ रहा रखने के लिए और जवाब हमेशा मेरे लिए स्पष्ट नहीं है। तो, मेरे विचार यहाँ हैं।

% डब्ल्यू और% डब्ल्यू सामान्य डिलिमिटेड इनपुट प्रकार के उदाहरण हैं, जो Arrays से संबंधित हैं। ऐसे अन्य प्रकार हैं जिनमें% q,% Q,% r,% x और% i शामिल हैं।

ऊपरी और निचले मामले के बीच का अंतर यह है कि यह हमें सिंगल और डबल कोट की विशेषताओं तक पहुंच प्रदान करता है। सिंगल कोट्स और लोअरकेस% डब्ल्यू के साथ, हमारे पास कोई कोड इंटरपोलेशन नहीं है (उदा। # {कुछ कोड}) और काम करने वाले वर्णों की सीमित श्रृंखला (उदा। \, \ N)। डबल कोट्स और अपरकेस% डब्ल्यू के साथ हम इन सुविधाओं तक पहुंच प्राप्त करते हैं।

इस्तेमाल किया जाने वाला डिलीमीटर कोई भी चरित्र नहीं हो सकता है, न केवल खुले कोष्ठक। प्रभाव में देखने के लिए ऊपर दिए गए उदाहरणों के साथ खेलो। प्रतिशत स्ट्रिंग्स के लिए http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed.html

मार्क

1

%W -

एक पूर्ण w और पूरी सूची% के उदाहरण के साथ लिखते हैं, से बचने के पात्रों और सीमांकक के लिए पर एक नजर है %Q जैसे डबल-उद्धृत सरणी तत्वों के लिए प्रयोग किया जाता है, उदाहरण के लिए,

foo = "!" 
%W{hello world #{foo}} # => ["hello", "world", "!"] 

%w का उपयोग एकल-उद्धृत सरणी तत्वों जैसे %q के लिए किया जाता है।

%w(hello world #{foo}) 
# => ["hello","world", "\#{foo}"] 
संबंधित मुद्दे