% W (অ্যারে) এর অর্থ কী?


835

আমি ফাইল ইউটিলেসের জন্য ডকুমেন্টেশন দেখছি।

আমি নিম্নলিখিত লাইন দ্বারা বিভ্রান্ত:

FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'

কী %wমানে? আপনি কি আমাকে ডকুমেন্টেশনের দিকে নির্দেশ করতে পারেন?

উত্তর:


1243

%w(foo bar)এর জন্য একটি শর্টকাট ["foo", "bar"]। অর্থ এটি কমাগুলির পরিবর্তে ফাঁকা এবং চারপাশে উদ্ধৃতিবিহীন স্ট্রিংগুলির একটি অ্যারের লিখতে একটি স্বরলিপি। জেনস্পাইডারের চটজলদিতে আপনি আক্ষরিক রচনার পদ্ধতির একটি তালিকা পেতে পারেন ।


199
এছাড়াও, প্রথম বন্ধনী প্রায় কোনও চরিত্র যেমন স্কোয়ার বন্ধনী% w [...], কোঁকড়ানো ধনুর্বন্ধনী% w {...} বা এমনকি বিস্ময়বোধক চিহ্ন% w! ...!! এগুলির সবার একই আচরণ (অ্যারে ফিরানো)।
ryanb

143
এর অর্থ কী তা স্মরণে রাখার সহজ উপায়টি হ'ল "হোয়াইটস্পেস (ডাব্লু) বিভাজিত অ্যারে"।
জুলিক

7
দেখুন "সাধারণ সীমায়িত ইনপুট" এখানে ruby-doc.org/docs/ProgrammingRuby/html/language.html
জ্যারেড অঙ্গুলিনির্দেশ

121
যদি স্ট্রিংয়ের স্পেস থাকে তবে কেবল তাদের \ দিয়ে পালাতে হবে \ প্রাক্তন:%w(ab\ c def) # => ["ab c", "def"]
দিমিত্রি

6
অনুমান করুন যে এই পৃষ্ঠাটিও প্রশ্নটি সমাধান করে দিত
ডক.আর.অর্গ.ওকোর

471

আমি %w()একটি "শব্দের অ্যারে" হিসাবে মনে করি - উপাদানগুলি ফাঁকা স্থান দ্বারা সীমিত করা হয় এবং এটি স্ট্রিংগুলির একটি অ্যারের প্রদান করে।

অন্যান্য% আক্ষরিক রয়েছে:

  • %r() নিয়মিত ভাব প্রকাশের অন্য উপায় way
  • %q() একটি একক-উদ্ধৃত স্ট্রিং লেখার অন্য উপায় (এবং এটি মাল্টি-লাইন হতে পারে, যা দরকারী)
  • %Q() একটি ডাবল-কোটেড স্ট্রিং দেয়
  • %x() শেল কমান্ড
  • %i() প্রতীকগুলির একটি অ্যারে দেয় (রুবি> = ২.০.০)
  • %s()fooএকটি প্রতীক পরিণত হয় ( :foo)

আমি অন্য কাউকে চিনি না, তবে সেখানে কিছুটা লুকোচুরি থাকতে পারে ...


32
রুবি ২.০.০ হিসাবে আপনি %i()চিহ্নগুলির একটি অ্যারে তৈরি করতেও ব্যবহার করতে পারেন ।
ডেভিড Tuite

10
এছাড়াও আছে %()(বা %[]বা %{}) যা একটি ডাবল উদ্ধৃত স্ট্রিং দেয় এবং ডাবল উদ্ধৃতি যেমন পলায়ন করে %Q()। উদা%("sender name" <sender@example.com>) # => "\"sender name\" <sender@example.com>"
ডেনিস

59

এছাড়াও %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...


22

যদিও এটি একটি পুরাতন পোস্ট, প্রশ্নটি সামনে আসতে থাকে এবং উত্তরগুলি আমার কাছে সর্বদা পরিষ্কার বলে মনে হয় না, সুতরাং, এখানে আমার চিন্তাভাবনাগুলি:

%wএবং অ্যারে সম্পর্কিত %Wজেনারেল ডিলিমিট ইনপুট ধরণের উদাহরণ । অন্তর্ভুক্ত অন্যান্য ধরণের রয়েছে %q,%Q , %r, %xএবং %i

উচ্চ এবং নিম্ন কেস সংস্করণের মধ্যে পার্থক্য হ'ল এটি আমাদের একক এবং ডাবল উদ্ধৃতিগুলির বৈশিষ্ট্যগুলিতে অ্যাক্সেস দেয়। একক উদ্ধৃতি এবং (ছোট হাতের) সাথে %w, আমরা কোন কোড ক্ষেপক (আছে #{someCode}) এবং পালাবার অক্ষরের একটি সীমিত পরিসর যে কাজ ( \\,\n )। ডবল কোট এবং (বড় হাতের) সাথে %Wআমরা কি এই বৈশিষ্ট্যগুলি এক্সেস আছে।

ব্যবহৃত ডিলিমিটারটি কেবলমাত্র উন্মুক্ত বন্ধনী নয়, কোনও চরিত্র হতে পারে। এটি কার্যকরভাবে দেখতে উপরের উদাহরণগুলির সাথে খেলুন।

উদাহরণ দিয়ে একটি পূর্ণ লেখার জন্য %wএবং সম্পূর্ণ তালিকা পালাবার অক্ষর এবং বিভেদক, কটাক্ষপাত আছে " - W বনাম ডব্লিউ%% - রুবি! সিক্রেটস প্রকাশ "


17

পরিবর্তে %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]

আরও পড়ার জন্য এখানে


11

Http://ruby-doc.org/core/doc/syntax/literals_rdoc.html#label- পারসেন্ট স্ট্রিংয়ের ডকুমেন্টেশন থেকে উদ্ধৃত :

% (...) ছাড়াও একটি স্ট্রিং তৈরি করে,% অন্যান্য ধরণের অবজেক্ট তৈরি করতে পারে। স্ট্রিংয়ের মতো, একটি বড় অক্ষর অন্তরঙ্গকরণ এবং পালিয়ে যাওয়া অক্ষরগুলিকে অনুমতি দেয় যখন একটি ছোট হাতের অক্ষর তাদের অক্ষম করে।

এগুলি রুবিতে শতাংশ স্ট্রিংগুলির ধরণ:
...
% ডাবলু : স্ট্রিংগুলির অ্যারে


2
গীজ ধন্যবাদ! ভাবতে শুরু করেছিলাম এর অস্তিত্ব নেই। অন্যদের সরবরাহিত রুবডোক লিঙ্কগুলি নষ্ট হয়ে গেছে।
গেরি

এগুলির জন্য ডকুমেন্টেশনটি ছিল না বেশ কিছুক্ষণের জন্য রুবিডক্সে অন্তর্ভুক্ত করা হয়নি।
টিন ম্যান

2

আমাকে ব্যবহারকারীর পুরো নামের সিএসভি স্প্রেডশিট থেকে একগুচ্ছ কলাম দেওয়া হয়েছিল এবং আমাকে ফাঁকা স্থান সহ ফরম্যাটিংটি রাখা দরকার। রুবি ব্যবহার করার সময় এগুলিতে প্রবেশ করার সবচেয়ে সহজ উপায়টি হ'ল:

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চূড়ান্ত অ্যারে আউটপুটে উপস্থিত থাকতে চান তখন এমনটি ঘটেছিল ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.