जवाबों:
क्या आप बात कर रहे हैं gets
?
puts "Enter A"
a = gets.chomp
puts "Enter B"
b = gets.chomp
c = a.to_i + b.to_i
puts c
ऐसा कुछ?
Kernel.gets
में पाए गए परम को पढ़ने की कोशिश करता है ARGV
और नहीं मिलने पर सांत्वना देने के लिए कहता है ARGV
। ARGV
खाली उपयोग न होने पर भी कंसोल से पढ़ने के लिए बाध्य करनाSTDIN.gets
Kernel.gets
मिली फ़ाइलों को पढ़ने की कोशिश करें ARGV
और यदि नहीं ARGV
मिला तो केवल कंसोल के लिए कहता है । ARGV
खाली उपयोग न होने पर भी कंसोल से पढ़ने के लिए बाध्य करना STDIN.gets
।
a.to_i
और b.to_i
बेहतर हो सकता है
gets
अवरुद्ध? यदि नहीं, तो क्या कोई विकल्प है जो अवरुद्ध है?
आप कमांड लाइन के माध्यम से पैरामीटर भी पास कर सकते हैं। कमांड लाइन तर्क ARGV सरणी में स्टोर हैं। इसलिए ARGV [0] पहली संख्या है और ARGV [1] दूसरा नंबर है
#!/usr/bin/ruby
first_number = ARGV[0].to_i
second_number = ARGV[1].to_i
puts first_number + second_number
और आप इसे इस तरह कहते हैं
% ./plus.rb 5 6
==> 11
उपयोगकर्ताओं से इनपुट लेने के कई तरीके हैं। मुझे व्यक्तिगत रूप से विधि का उपयोग करना पसंद है। जब आप उपयोग करते हैं, तो यह वह स्ट्रिंग प्राप्त करता है जिसे आपने टाइप किया था, और जिसमें आपके इनपुट को समाप्त करने के लिए दबाया गया ENTER कुंजी भी शामिल है ।
name = gets
"mukesh\n"
आप इसे irb में देख सकते हैं ; इसे टाइप करें और आप \ n देखेंगे, जो कि "newline" वर्ण है, जो ENTER कुंजी उत्पन्न करता है: प्रकार
name = gets
आप देखेंगे जैसे कि"mukesh\n"
आप chomp विधि का उपयोग करके pesky newline वर्ण से छुटकारा पा सकते हैं ।
चॉम्प विधि आपको वापस स्ट्रिंग प्रदान करती है, लेकिन बिना समाप्ति वाली न्यूलाइन के। सुंदर धूमधाम विधि जीवन रक्षक।
name = gets.chomp
"mukesh"
इनपुट पढ़ने के लिए आप टर्मिनल का उपयोग भी कर सकते हैं। ARGV ऑब्जेक्ट क्लास में एक निरंतर परिभाषित है । यह ऐरे वर्ग का एक उदाहरण है और सभी सरणी विधियों तक इसकी पहुंच है। चूंकि यह एक सरणी है, भले ही यह एक स्थिर है, इसके तत्वों को संशोधित किया जा सकता है और बिना किसी परेशानी के साफ किया जा सकता है। डिफ़ॉल्ट रूप से, रूबी कमांड लाइन बाइनरी लागू होने पर सभी रूबी प्रोग्राम (स्पेस से विभाजित) में पारित सभी कमांड लाइन तर्कों को कैप्चर करता है और उन्हें ARGV सरणी में स्ट्रिंग्स के रूप में संग्रहीत करता है ।
आपके रूबी कार्यक्रम के अंदर लिखे जाने पर, जाने पर ARGV एक कमांड लाइन कमांड लेगा जो इस तरह दिखता है:
test.rb hi my name is mukesh
और एक सरणी बनाएं जो इस तरह दिखती है:
["hi", "my", "name", "is", "mukesh"]
लेकिन, अगर मैं सीमित इनपुट पास करना चाहता हूं तो हम कुछ इस तरह का उपयोग कर सकते हैं।
test.rb 12 23
और अपने कार्यक्रम में इस तरह के इनपुट का उपयोग करें:
a = ARGV[0]
b = ARGV[1]
यदि आप इंटरैक्टिव कंसोल बनाना चाहते हैं:
#!/usr/bin/env ruby
require "readline"
addends = []
while addend_string = Readline.readline("> ", true)
addends << addend_string.to_i
puts "#{addends.join(' + ')} = #{addends.sum}"
end
उपयोग (आप summator
वर्तमान निर्देशिका में फ़ाइल में स्निपेट के ऊपर डालते हैं ):
chmod +x summator
./summator
> 1
1 = 1
> 2
1 + 2 = 3
Ctrl + D
बाहर निकलने के लिए उपयोग करें