रूबी सरणियाँ:% w बनाम% W


152

अंतर क्या है?


18
"% w" उन लोगों के लिए मेरा सामान्य प्रतिशोध है जो रूबी की पठनीयता के बारे में थोड़ा बहुत अहंकारी हो जाते हैं। हर बार काम करता है।
क्रेग स्टंट

अब आपके पास एक और बेहतर प्रतिक्रिया है :-)
इरेटा

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

जवाबों:


233

% w उद्धरण एकल उद्धरण ''(कोई वैरिएबल इंटरपोलेशन, कम एस्केप सीक्वेंस) की तरह है, जबकि% W दोहरे उद्धरण चिह्नों की तरह है ""

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

आपका उदाहरण% w के लिए दोहरे उद्धरण चिह्नों को दिखाता है। क्या यह सही है?
फोटॉन

हाँ। आउटपुट प्रिंट करते समय, रूबी हमेशा दोहरे उद्धरण चिह्नों का उपयोग करती है और पात्रों की तरह बच निकलती है #'#{foo}'और "\#{foo}"आप एक ही स्ट्रिंग है, जो आप के साथ सत्यापित कर सकते हैं देना '#{foo}' == "\#{foo}"में irb
ब्रायन कैंपबेल

यह पहले देखने पर थोड़ा भ्रमित है, लेकिन स्पष्टीकरण के लिए धन्यवाद।
फोटॉन

29

एक अनुप्रयोग जो मैंने% W बनाम% w के लिए पाया है:

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

12
हालांकि इस मामले में, यह सिर्फ करना आसान हैgreetings = %w(hi hello how\ do\ you\ do)
23:11

21

% W सामान्य दोहरा भाव प्रतिस्थापन करता है। % w नहीं करता है।


11

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

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

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

उपयोग किए गए सीमांकक कोई भी चरित्र हो सकता है, न कि केवल खुले कोष्ठक। ऊपर दिए गए उदाहरणों के साथ खेलते हैं कि प्रभाव में देखें।

: -% की w और पूरी सूची भागने अक्षर और सीमांकक उदाहरण, के साथ एक पूर्ण लिखने अप के लिए पर एक नजर है http://cyreath.blogspot.com/2014/05/ruby-w-vs-w-secrets-revealed .html

निशान


1
यह एक अच्छा लेख है। मुझे नहीं पता था कि आप तार या अन्य चीजों को उसी तरह से बना सकते हैं और संलग्न चरित्र आप जो चाहें कर सकते हैं। उदाहरण के लिए,%w&readable af&
डेक्स


1

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

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

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

%w(hello world #{foo})
# => ["hello","world", "\#{foo}"]

0
array = %w(a b c d) 

के समान

array = ["a", "b", "c", "d"]

%w स्ट्रिंग के लिए उद्धरण चिह्न के लिए एक छोटा कट प्रतीक है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.