রুবিতে কনসোল থেকে ইনপুট পড়ুন?


115

আমি রুবিতে একটি সাধারণ এ + বি প্রোগ্রাম লিখতে চাই, তবে কনসোল দিয়ে কীভাবে কাজ করব তা আমার কোনও ধারণা নেই।


10
আমি রুবির কথা বলছি তবে আরওআর এর কথা বলছি না। কনসোল থেকে ইনপুট নিয়ে কোনও শব্দ নেই।
সের্গেই

উত্তর:


228

তুমি কি কথা বলছ 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পাওয়া না গেলে কেবল কনসোল দিতে বলে asks ARGVখালি ব্যবহার না হলেও কনসোল থেকে পড়তে বাধ্য করার জন্যSTDIN.gets


59
এই সমাধানটির সাথে আমার একটি বিরোধ আছে: Kernel.getsপাওয়া ফাইলগুলি পড়ার চেষ্টা করুন ARGVএবং যদি ARGVপাওয়া না যায় তবে কেবল কনসোল দিতে বলে । ARGVখালি ব্যবহার না হলেও কনসোল থেকে পড়তে বাধ্য করার জন্য STDIN.gets
ফগুইলেন

3
a.to_iএবং b.to_iআরও ভাল হতে পারে
ডোরিয়ান

হয় getsরুদ্ধ হবে? যদি তা না হয় তবে কি এমন কোনও বিকল্প আছে যা অবরুদ্ধ করছে?
NoMAD

1
@ ফগুইলেন এটি দুর্দান্ত উত্তর এবং মন্তব্যগুলিতে লুকানো উচিত নয়। আপনি সম্ভবত এটি একটি উত্তর করতে পারেন, দয়া করে? ধন্যবাদ!
ড্যান রোজনস্টার্ক

2
@ এই পরামর্শের জন্য ধন্যবাদ, আমি উত্তরে নিজেই একটি আপডেট যুক্ত করেছি added
fguillen

28

আপনি কমান্ড লাইনের মাধ্যমে পরামিতিগুলিও পাস করতে পারেন। কমান্ড লাইন আর্গুমেন্টগুলি অ্যারের এআরজিভিতে স্টোর। সুতরাং এআরজিভি [0] হ'ল প্রথম সংখ্যা এবং এআরজিভি [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

10

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

name = gets
"mukesh\n"

আপনি এটি আইআরবিতে দেখতে পারেন ; এটি টাইপ করুন এবং আপনি \ n দেখতে পাবেন যা ENTER কী উত্পন্ন করে এমন "নিউলাইন" অক্ষর: টাইপ করুন name = getsআপনি এমন কিছু কিছু দেখতে পাবেন যেমন "mukesh\n" আপনি chomp পদ্ধতি ব্যবহার করে pesky newline চরিত্র থেকে মুক্তি পেতে পারেন ।

Chomp পদ্ধতি আপনাকে স্ট্রিং ফিরিয়ে দেয়, তবে নতুন লাইনের সমাপ্তি ছাড়াই। সুন্দর চম্প পদ্ধতি জীবন রক্ষাকারী।

name = gets.chomp
"mukesh"

আপনি ইনপুট পড়তে টার্মিনালটিও ব্যবহার করতে পারেন। এআরজিভি হ'ল অবজেক্ট শ্রেণিতে একটি ধ্রুবক সংজ্ঞায়িত । এটি অ্যারে শ্রেণীর উদাহরণ এবং এতে অ্যারের সমস্ত পদ্ধতিতে অ্যাক্সেস রয়েছে। যেহেতু এটি একটি অ্যারে, এটি ধ্রুবক হলেও, এর উপাদানগুলি কোনও সমস্যা ছাড়াই সংশোধন ও সাফ করা যায়। ডিফল্টরূপে, রুবি একটি রুবি প্রোগ্রামে স্থানিত সমস্ত কমান্ড লাইন আর্গুমেন্ট (স্পেস দ্বারা বিভক্ত) ক্যাপচার করে যখন কমান্ড-লাইন বাইনারি চালু হয় এবং এআরজিভি অ্যারেতে স্ট্রিং হিসাবে সেগুলি সঞ্চয় করে ।

আপনার রুবি প্রোগ্রামের ভিতরে লেখার সময়, এআরজিভি একটি কমান্ড লাইন কমান্ড নেবে যা দেখতে এরকম দেখাচ্ছে:

test.rb hi my name is mukesh

এবং এমন একটি অ্যারে তৈরি করুন যা দেখতে দেখতে:

["hi", "my", "name", "is", "mukesh"]

তবে, আমি যদি সীমিত ইনপুট পাস করতে চাই তবে আমরা এরকম কিছু ব্যবহার করতে পারি।

test.rb 12 23

এবং আপনার প্রোগ্রামে এই জাতীয় ইনপুটটি ব্যবহার করুন:

a = ARGV[0]
b = ARGV[1]

5

আপনি যদি টার্মিনাল থেকে তর্কগুলি ধরে রাখতে চান তবে নীচের কোডটি চেষ্টা করুন:

A = ARGV[0].to_i
B = ARGV[1].to_i

puts "#{A} + #{B} = #{A + B}"

0

আপনি যদি ইন্টারেক্টিভ কনসোল তৈরি করতে চান:

#!/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প্রস্থান করতে ব্যবহার করুন

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