রুবি ব্যবহার করে কীভাবে একটি পদক্ষেপে অ্যারে শুরু করা যায়?


105

আমি এইভাবে একটি অ্যারে শুরু করি:

array = Array.new
array << '1' << '2' << '3'

এক ধাপে কি তা করা সম্ভব? যদি তাই হয়, কিভাবে?


20
কেবল উপন্যাসের একক-লাইনের পুনরাবৃত্তি পুশ করার জন্য +1। :)
ফ্রেগজ

1
@ ফ্রোগজ খানিকটা খাটো:; array = Array.new << 1 << 2 << 3 )
আলেকজান্ডার সুর্যাপেল

@ আলেকজান্ডারসুরফেল যা স্ট্রিংগুলির অ্যারের পরিবর্তে ফিক্সনুমসের একটি অ্যারে তৈরি করে।
ফ্রোগজ

1
@ ফ্রোগজ আমি কেবল উল্লেখ করতে চেয়েছিলাম যে এটি আরও ছোট হতে পারে। আপনাকে কেবল পরিবর্তন 1করতে হবে '1'
আলেকজান্ডার সুর্যাপেল

উত্তর:


192

আপনি একটি অ্যারে আক্ষরিক ব্যবহার করতে পারেন:

array = [ '1', '2', '3' ]

আপনি একটি ব্যাপ্তিও ব্যবহার করতে পারেন:

array = ('1'..'3').to_a  # parentheses are required
# or
array = *('1'..'3')      # parentheses not required, but included for clarity

সাদা স্পেস-সীমাবদ্ধ স্ট্রিংগুলির অ্যারেগুলির জন্য, আপনি পার্সেন্ট স্ট্রিং সিনট্যাক্স ব্যবহার করতে পারেন :

array = %w[ 1 2 3 ]

Array.newপ্রতিটি প্রবেশের মান কী হবে তা নির্ধারণ করতে আপনি একটি ব্লকও পাস করতে পারেন :

array = Array.new(3) { |i| (i+1).to_s }

পরিশেষে, যদিও এটি উপরের অন্যান্য উত্তরগুলির মতো তিনটি স্ট্রিংয়ের একই অ্যারে তৈরি করে না, তবে এটিও নোট করুন যে আপনি অ্যারে তৈরি করতে রুবি ১.৮..7++ এ গণক ব্যবহার করতে পারেন; উদাহরণ স্বরূপ:

array = 1.step(17,3).to_a
#=> [1, 4, 7, 10, 13, 16]

4
যদিও আমি স্প্লট ওভার to_a( [*'1'..'3']) এর চেয়ে বেশি পছন্দ করি, তারপরেও বিশদ উত্তরের জন্য প্লাস ওয়ান ।
মাইকেল কোহল

@ মিশেলকোহল আমি সম্মত; আমি (ভুল) ধারণাটি ছিলাম যে আপনি 1.8.6 এ রেঞ্জকে ছড়িয়ে দিতে পারবেন না। আমি এটি যোগ করব, ধন্যবাদ! মনে রাখবেন যে আপনাকে আরে আক্ষরিক মধ্যে স্প্ল্যাট করার দরকার নেই (যদি না আপনি স্প্ল্যাটের পাশাপাশি রচনা করছেন)।
ফ্রোগজ

আমি জানি, এটি কেবলমাত্র আমি প্রায়শই সেই উদ্দেশ্যে স্প্ল্যাট ব্যবহার করি (এটি সংশ্লেষ করা হয়) এবং আমি এটিও পছন্দ করি যে এটি আপনাকে কী শেষ করে তা প্রদর্শন করে।
মাইকেল কোহল

2
এছাড়াও, শ্রেণি পদ্ধতি অ্যারে :: []] ব্যবহার করা যেতে পারে: Array[ "1","2","3"] #=> ["1","2","3"](আমি মনে করি না অ্যারে আক্ষরিক নির্মাণকারীর সাথে এই পদ্ধতির কোনও যোগ আছে)। আপনি শীর্ষ স্তরের কার্নেল # Array(1..5) #=> [1,2,3,4,5]
অ্যারেও

* কি করে? আমি এর জন্য ডকুমেন্টেশন কোথায় পাব?
আর্নল্ড রোয়া

22

এক রৈখিক:

array = [] << 1 << 2 << 3   #this is for fixnums.

অথবা

 a = %w| 1 2 3 4 5 |

অথবা

 a = [*'1'..'3']

অথবা

 a = Array.new(3, '1')

অথবা

 a = Array[*'1'..'3']

8
আমি এটি ভোট দিলাম না, তবে আমি অনুমান করছি কারণ এটি তিনটি পদ্ধতি গ্রহণ করে এবং ক্রমান্বয়ে অ্যারে বৃদ্ধি করে, [1,2,3]যার বিপরীতে একটি একক সূচনা হয়। এছাড়াও, আপনার আরও অক্ষর। এছাড়াও, আপনি ফিক্সনুমসের একটি অ্যারে তৈরি করেছেন যেখানে ওপি স্ট্রিংগুলির একটি অ্যারে সম্পর্কে জিজ্ঞাসা করছে।
ফ্রেগজ

8

উপরের উত্তরগুলির সাথে, আপনি এটিও করতে পারেন

    =>  [*'1'.."5"]   #remember *
    => ["1", "2", "3", "4", "5"]

1
1.9 আপনি কি আপনার এই ভাবে করতে পারেন: >> [*?1..?5] #=> ["1", "2", "3", "4", "5"]
মাইকেল কোহল

7

এটি করার এক ছয় উপায়ের আরও বেশি প্রমাণ করার জন্য:

plus_1 = 1.method(:+)
Array.new(3, &plus_1) # => [1, 2, 3]

যদি 1.মাদবাদী (: +) সম্ভব না হয়, আপনিও করতে পারেন

plus_1 = Proc.new {|n| n + 1}
Array.new(3, &plus_1) # => [1, 2, 3]

অবশ্যই, এটি এই পরিস্থিতিতে ওভারকিল, তবে যদি plus_1সত্যিই দীর্ঘ প্রকাশ হয় তবে আপনি এটি অ্যারে তৈরি থেকে আলাদা লাইনে রাখতে চান to


3

আপনি করতে পারেন

array = ['1', '2', '3']

অন্যরা যেমন উল্লেখ করেছে, আপনি% w স্বরলিপি সহ এરેটি আরম্ভ করতে পারেন:

array = %w(1 2 3)

অথবা

array = %w[1 2 3]

দয়া করে মনে রাখবেন যে উভয় ক্ষেত্রেই প্রতিটি উপাদান একটি পূর্ণসংখ্যার চেয়ে স্ট্রিং হয়। সুতরাং আপনি যদি এমন কোনও অ্যারে চান যার উপাদানগুলি পূর্ণসংখ্যার হয় তবে আপনার প্রতিটি উপাদানকে অ্যাডাস্ট্রোফসের সাথে মোড়ানো উচিত নয়:

array_of_integers = [1, 2, 3]

এছাড়াও, আপনাকে উপাদানগুলির মধ্যে কমা রাখতে হবে না (এটি% w স্বরলিপি ছাড়াই অ্যারে তৈরি করার সময় প্রয়োজনীয়)। আপনি যদি এটি করেন (যা আমি প্রায়শই ভুল করে করতাম), যেমন:

wrong_array = %w(1, 2, 3)

এর উপাদানগুলি তিনটি স্ট্রিং হবে ---- "1,", "2,", "3"। সুতরাং আপনি যদি:

puts wrong_array

আউটপুট হবে:

1,
2,
3
=>nil

যা আমরা এখানে চাই না।

আশা করি এটি বিষয়টি পরিষ্কার করতে সহায়তা করবে!


2

এই জাতীয় অ্যারে তৈরি করতে আপনি করতে পারেন:

array = ['1', '2', '3']

2

আপনার যদি স্ট্রিংগুলির একটি অ্যারে থাকে তবে আপনি এটির মতো এটি আরম্ভ করতে পারেন:

array = %w{1 2 3}

যে কোনও সাদা স্থানের সাথে প্রতিটি উপাদানকে আলাদা করুন


1

আপনি উপাদানগুলি []এভাবে লিখে এক ধাপে একটি অ্যারে শুরু করতে পারেন:

array = ['1', '2', '3']

0

আপনি কেবল %wরুবি অ্যারেতে স্বরলিপি দিয়ে এটি করতে পারেন ।

array = %w(1 2 3)

এটি অ্যারের সাথে 1,2,3 অ্যারের মান যুক্ত করবে এবং আউটপুট হিসাবে প্রিন্ট আউট করবে ["1", "2", "3"]

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