मैं इस तरह से एक सरणी इनिशियलाइज़ करता हूँ:
array = Array.new
array << '1' << '2' << '3'
क्या एक कदम में ऐसा करना संभव है? यदि हां, तो कैसे?
array = Array.new << 1 << 2 << 3
:;)
1
होगा '1'
।
मैं इस तरह से एक सरणी इनिशियलाइज़ करता हूँ:
array = Array.new
array << '1' << '2' << '3'
क्या एक कदम में ऐसा करना संभव है? यदि हां, तो कैसे?
array = Array.new << 1 << 2 << 3
:;)
1
होगा '1'
।
जवाबों:
आप एक सरणी शाब्दिक का उपयोग कर सकते हैं:
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 }
अंत में, हालांकि यह तीन तारों के एक ही सरणी का उत्पादन नहीं करता है, जैसा कि ऊपर दिए गए अन्य उत्तर हैं, ध्यान दें कि आप सरणियों का निर्माण करने के लिए रूबी 1.8.7+ में एन्यूमरेटर का उपयोग कर सकते हैं; उदाहरण के लिए:
array = 1.step(17,3).to_a
#=> [1, 4, 7, 10, 13, 16]
to_a
( [*'1'..'3']
) पसंद करता हूं ।
Array[ "1","2","3"] #=> ["1","2","3"]
(मुझे नहीं लगता कि इस पद्धति का सरणी शाब्दिक निर्माणकर्ता के साथ कुछ भी करना है)। आप शीर्ष-स्तरीय कर्नेल # ऐरे का उपयोग कर सकते हैं (विधि का नाम वर्ग नाम जैसा दिखता है)Array(1..5) #=> [1,2,3,4,5]
एक लाइन:
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']
[1,2,3]
करता है और एक एकल आरंभीकरण करता है, जिसके विपरीत सरणी बढ़ता है। इसके अलावा, तुम्हारा चरित्र अधिक है। इसके अलावा, आपने फ़िक्नम्स की एक सरणी बनाई है, जबकि ओपी स्ट्रिंग्स की एक सरणी के बारे में पूछ रहा था।
उपरोक्त उत्तरों के साथ, आप यह भी कर सकते हैं
=> [*'1'.."5"] #remember *
=> ["1", "2", "3", "4", "5"]
>> [*?1..?5] #=> ["1", "2", "3", "4", "5"]
:।
यह साबित करने के लिए एक से अधिक छह तरीके हैं:
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
यह वास्तव में लंबी अभिव्यक्ति थी, तो आप इसे सरणी निर्माण से अलग लाइन पर रखना चाह सकते हैं।
तुम कर सकते हो
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
जो हम यहां चाहते हैं वह नहीं है।
उम्मीद है कि इस बिंदु को स्पष्ट करने में मदद करता है!
आप बस %w
माणिक सरण में अंकन के साथ ऐसा कर सकते हैं।
array = %w(1 2 3)
यह सरणी मानों को 1,2,3 जोड़ देगा, जैसा कि आउटपुट के लिए अरंड प्रिंट आउट करता है ["1", "2", "3"]