Rubyのコンソールからの入力を読み取りますか?


115

Rubyで簡単なA + Bプログラムを書きたいのですが、コンソールの操作方法がわかりません。


10
Rubyの話ですが、RORの話ではありません。コンソールからの入力についての言葉はありません。
セルゲイ

回答:


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ます。ARGV空でなくても強制的にコンソールから読み取るにはSTDIN.gets


59
このソリューションと競合しています:でKernel.gets見つかったファイルを読み取ってみてARGVARGV見つからない場合にのみコンソールに要求します。ARGVが空でなくても強制的にコンソールから読み取るには、を使用しますSTDIN.gets
fguillen 2012年

3
a.to_iそしてb.to_iより良いかもしれない
ドリアン

されgets、ブロッキング?そうでない場合、ブロックしている代替物はありますか?
noMAD 2013

1
@fguillenは素晴らしい回答であり、コメントに隠すべきではありません。答えてもらえますか?ありがとう!
Dan Rosenstark 2013年

2
@提案に感謝します。回答自体に更新を追加しました。
fguillen 2013年

28

コマンドラインからパラメータを渡すこともできます。コマンドライン引数は、配列ARGVに格納されます。したがって、ARGV [0]は最初の数値で、ARGV [1]は2番目の数値です。

#!/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

ユーザーから入力を受け取る方法はたくさんあります。私は個人的にはメソッドgetを使用するのが好きです。getsを使用すると、 入力した文字列が取得されます。これには、入力を終了するために押したEnterキーが含まれます

name = gets
"mukesh\n"

これはirbで確認できます。これを入力すると、Enterキーが生成する「改行」文字である\ nが表示されます。入力name = getsすると、chompメソッドを使用して"mukesh\n" 厄介な改行文字を取り除くことができます

chompメソッドは文字列を返しますが、終端の改行はありません。美味しいムチムチライフ救世主。

name = gets.chomp
"mukesh"

端末を使用して入力を読み取ることもできます。ARGVObject クラスで定義された定数です。これはArrayクラスのインスタンスであり、すべての配列メソッドにアクセスできます。配列なので定数ですが、要素の変更やクリアは問題なく行えます。デフォルトでは、Rubyは、コマンドラインバイナリが呼び出されたときにRubyプログラムに渡されたすべてのコマンドライン引数(スペースで分割)をキャプチャし、ARGV配列に文字列として格納します。

Rubyプログラム内で記述した場合、ARGVは次のようなコマンドラインコマンドを受け取ります。

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.