আমি ফাইল ইউটিলেসের জন্য ডকুমেন্টেশন দেখছি।
আমি নিম্নলিখিত লাইন দ্বারা বিভ্রান্ত:
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
কী %w
মানে? আপনি কি আমাকে ডকুমেন্টেশনের দিকে নির্দেশ করতে পারেন?
আমি ফাইল ইউটিলেসের জন্য ডকুমেন্টেশন দেখছি।
আমি নিম্নলিখিত লাইন দ্বারা বিভ্রান্ত:
FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
কী %w
মানে? আপনি কি আমাকে ডকুমেন্টেশনের দিকে নির্দেশ করতে পারেন?
উত্তর:
%w(foo bar)
এর জন্য একটি শর্টকাট ["foo", "bar"]
। অর্থ এটি কমাগুলির পরিবর্তে ফাঁকা এবং চারপাশে উদ্ধৃতিবিহীন স্ট্রিংগুলির একটি অ্যারের লিখতে একটি স্বরলিপি। জেনস্পাইডারের চটজলদিতে আপনি আক্ষরিক রচনার পদ্ধতির একটি তালিকা পেতে পারেন ।
%w(ab\ c def) # => ["ab c", "def"]
আমি %w()
একটি "শব্দের অ্যারে" হিসাবে মনে করি - উপাদানগুলি ফাঁকা স্থান দ্বারা সীমিত করা হয় এবং এটি স্ট্রিংগুলির একটি অ্যারের প্রদান করে।
অন্যান্য% আক্ষরিক রয়েছে:
%r()
নিয়মিত ভাব প্রকাশের অন্য উপায় way%q()
একটি একক-উদ্ধৃত স্ট্রিং লেখার অন্য উপায় (এবং এটি মাল্টি-লাইন হতে পারে, যা দরকারী)%Q()
একটি ডাবল-কোটেড স্ট্রিং দেয়%x()
শেল কমান্ড%i()
প্রতীকগুলির একটি অ্যারে দেয় (রুবি> = ২.০.০)%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'
রুবি ২.০.০ থেকে আপনার কাছেও রয়েছে:
%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 আক্ষরিক অ্যারে সিনট্যাক্সে অগ্রাধিকার দিন। এই নিয়মটি কেবল দুই বা ততোধিক উপাদান সহ অ্যারেগুলিতে প্রয়োগ করুন।
# 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- পারসেন্ট স্ট্রিংয়ের ডকুমেন্টেশন থেকে উদ্ধৃত :
% (...) ছাড়াও একটি স্ট্রিং তৈরি করে,% অন্যান্য ধরণের অবজেক্ট তৈরি করতে পারে। স্ট্রিংয়ের মতো, একটি বড় অক্ষর অন্তরঙ্গকরণ এবং পালিয়ে যাওয়া অক্ষরগুলিকে অনুমতি দেয় যখন একটি ছোট হাতের অক্ষর তাদের অক্ষম করে।
এগুলি রুবিতে শতাংশ স্ট্রিংগুলির ধরণ:
...
% ডাবলু : স্ট্রিংগুলির অ্যারে
আমাকে ব্যবহারকারীর পুরো নামের সিএসভি স্প্রেডশিট থেকে একগুচ্ছ কলাম দেওয়া হয়েছিল এবং আমাকে ফাঁকা স্থান সহ ফরম্যাটিংটি রাখা দরকার। রুবি ব্যবহার করার সময় এগুলিতে প্রবেশ করার সবচেয়ে সহজ উপায়টি হ'ল:
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
চূড়ান্ত অ্যারে আউটপুটে উপস্থিত থাকতে চান তখন এমনটি ঘটেছিল ।