मैं FileUtils के लिए दस्तावेज देख रहा हूँ।
मैं निम्नलिखित पंक्ति से भ्रमित हूँ:
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
क्या %w
मतलब है? क्या आप मुझे दस्तावेज की ओर इशारा कर सकते हैं?
मैं FileUtils के लिए दस्तावेज देख रहा हूँ।
मैं निम्नलिखित पंक्ति से भ्रमित हूँ:
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
क्या %w
मतलब है? क्या आप मुझे दस्तावेज की ओर इशारा कर सकते हैं?
जवाबों:
%w(foo bar)
के लिए एक शॉर्टकट है ["foo", "bar"]
। इसका मतलब यह है कि यह अल्पविरामों के बजाय रिक्त स्थान के द्वारा अलग किए गए और उनके आसपास के उद्धरणों के बिना लिखने के लिए एक संकेतन है। आप zenspider के quickref में शाब्दिक लेखन के तरीकों की एक सूची पा सकते हैं ।
%w(ab\ c def) # => ["ab c", "def"]
मुझे लगता है %w()
कि "शब्द सरणी" के रूप में - तत्वों को रिक्त स्थान द्वारा सीमांकित किया जाता है और यह स्ट्रिंग की एक सरणी देता है।
अन्य% शाब्दिक हैं:
%r()
नियमित अभिव्यक्ति लिखने का एक और तरीका है।%q()
एकल-उद्धृत स्ट्रिंग लिखने का एक और तरीका है (और बहु-पंक्ति हो सकता है, जो उपयोगी है)%Q()
एक डबल-उद्धृत स्ट्रिंग देता है%x()
एक शेल कमांड है%i()
प्रतीकों की एक सरणी देता है (रूबी> = 2.0.0)%s()
foo
एक प्रतीक में बदल जाता है ( :foo
)मैं किसी अन्य को नहीं जानता, लेकिन वहाँ कुछ गुप्त हो सकता है ...
%i()
प्रतीकों की एक सरणी उत्पन्न करने के लिए भी उपयोग कर सकते हैं ।
%()
(या %[]
या %{}
) जो एक डबल उद्धृत स्ट्रिंग देता है और डबल कोट्स पलायन, की तरह %Q()
। जैसे%("sender name" <sender@example.com>) # => "\"sender name\" <sender@example.com>"
वहाँ भी है %s
कि आप किसी भी प्रतीक बनाने के लिए अनुमति देता है, उदाहरण के लिए:
%s|some words| #Same as :'some words'
%s[other words] #Same as :'other words'
%s_last example_ #Same as :'last example'
रूबी 2.0.0 के बाद से आपके पास भी है:
%i( a b c ) # => [ :a, :b, :c ]
%i[ a b c ] # => [ :a, :b, :c ]
%i_ a b c _ # => [ :a, :b, :c ]
# etc...
%W
और%w
आप उद्धरण और अल्पविराम का उपयोग किए बिना स्ट्रिंग का एक सरणी बनाने के लिए अनुमति देते हैं।
हालाँकि यह एक पुरानी पोस्ट है, प्रश्न सामने आते रहते हैं और उत्तर मुझे हमेशा स्पष्ट नहीं लगते हैं, इसलिए, यहाँ मेरे विचार हैं:
%w
और %W
सामान्य डिलीट किए गए इनपुट प्रकारों के उदाहरण हैं , जो एरे से संबंधित हैं। वहाँ अन्य प्रकार है कि शामिल कर रहे हैं %q
, %Q
, %r
, %x
और %i
।
ऊपरी और निचले मामले के संस्करण के बीच का अंतर यह है कि यह हमें एकल और दोहरे उद्धरण चिह्नों की सुविधा प्रदान करता है। सिंगल कोट्स और (लोअरकेस) के साथ %w
, हमारे पास कोई कोड इंटरपोलेशन ( #{someCode}
) और एक सीमित श्रेणी के एस्केप वर्ण हैं जो काम करते हैं ( \\
, \n
)। दोहरे उद्धरण चिह्नों और (अपरकेस) के साथ %W
हम करते हैं इन सुविधाओं की पहुंच है।
उपयोग किए गए सीमांकक कोई भी चरित्र हो सकता है, न कि केवल खुले कोष्ठक। ऊपर दिए गए उदाहरणों के साथ खेलते हैं कि प्रभाव में देखें।
एक पूर्ण लेखन के लिए %w
और पूरी सूची के साथ, अक्षर और सीमांकक से बचकर, " रूबी -% w बनाम% W - रहस्यों का पता चला! "
इसके बजाय %w()
हमें उपयोग करना चाहिए%w[]
रूबी शैली गाइड के अनुसार:
जब आप शब्दों की एक सरणी (रिक्त स्थान के बिना रिक्त तार और उनमें विशेष वर्ण) की आवश्यकता हो, तो% w को शाब्दिक सरणी सिंटैक्स में प्राथमिकता दें। इस नियम को केवल दो या अधिक तत्वों वाले सरणियों पर लागू करें।
# bad
STATES = ['draft', 'open', 'closed']
# good
STATES = %w[draft open closed]
उन ब्रेसिज़ का उपयोग करें जो विभिन्न प्रकार के प्रतिशत के लिए सबसे उपयुक्त हैं।
[]
सरणी के लिए शाब्दिक ( %w, %i, %W, %I
) मानक सरणी के साथ संरेखित किया गया है।
# bad
%w(one two three)
%i(one two three)
# good
%w[one two three]
%i[one two three]
के लिए और अधिक पढ़ यहाँ ।
पर प्रतिशत स्ट्रिंग्स के लिए प्रलेखन से अंश Http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label-Percent+Strings :
% (...) के अलावा जो स्ट्रिंग बनाता है,% अन्य प्रकार की वस्तु बना सकता है। तार के साथ के रूप में, एक अपरकेस अक्षर प्रक्षेप की अनुमति देता है और वर्णों से बच जाता है जबकि एक निचला अक्षर उन्हें निष्क्रिय कर देता है।
ये रूबी में प्रतिशत स्ट्रिंग्स के प्रकार हैं:
...
% w : ऐरे ऑफ़ स्ट्रिंग्स
मुझे उपयोगकर्ताओं के पूर्ण नामों के एक CSV स्प्रेडशीट से कॉलम का एक गुच्छा दिया गया था और मुझे रिक्त स्थान के साथ प्रारूपण रखने की आवश्यकता थी। माणिक्य का उपयोग करते समय मैंने उन्हें पाने का सबसे आसान तरीका बताया:
names = %( Porter Smith
Jimmy Jones
Ronald Jackson).split('\n')
यह हाइलाइट करता है %()
जो एक स्ट्रिंग बनाता है जैसे "Porter Smith\nJimmyJones\nRonald Jackson"
और आप split
पर स्ट्रिंग को प्राप्त करने के लिए"\n"
["Porter Smith", "Jimmy Jones", "Ronald Jackson"]
तो ओपी के मूल प्रश्न का उत्तर देने के लिए, वे लिख सकते थे %(cgi\ spaeinfilename.rb;complex.rb;date.rb).split(';')
कि क्या हुआ space
जब आप space
अंतिम सरणी आउटपुट में मौजूद होना चाहते हैं ।