2017-10-23 13 views
0

Ruby on Windowsでのコマンドプロンプトの開始ではこれを動作させることはできません。Rubyでコマンドプロンプトを起動できません

puts "Whats your name?" 
name = gets 
puts "Hello" + name + ". How are you?" 

しかし、私は「ルビーprogram.rb」とそれを呼び出す場合は、代わりに私の入力を待っているため、それだけで出力します:

Whats your name? 
Helloputs "Whats your name?" 
. How are you? 

それはのようなものです 私はこの単純なプログラムの開発を得ました"gets"コマンドが認識されていません。なぜこれが起こるのですか?

+0

の可能性のある重複した[、プロンプトを表示し、入力を取得し、変数に割り当てるためのRubyでワンライナー?](https://stackoverflow.com/questions/2889720/1-in-in-ruby-for-a-promptを表示するための入力と割り当て-a-var) –

+1

これは私の質問ではありません。 getsコマンドが動作しないようなものです。 –

答えて

1

私も興味があり、このリンクが見つかりましたHow does gets and gets.chomp in ruby work? 明らかに新しい行が作成され、名前が見つかりませんでした。

これは楽しみを持って

puts "Whats your name?" 
name = gets 
puts "Hello " + name.chomp + ". How are you?" 

(リンクの指示に従って)、動作するように見えました。あなたはレールを使用して起動した場合

また、あなたはまた、あなたが(何らかの形で)コマンドラインで、あなたのプログラムの開発の名前を2回渡しているように見えます 例をあなたのコンソールに

> def test1 
>  ...code .. 
> end 

> test1 
+0

まだ、コマンドプロンプトは自分の入力を待つ必要があります。私の名前を入力したいのですが、それは待たずにテキストを印刷します。私は本当に理由を知りません。 –

+1

あなたのコンソール(irb)で...これをやってみてください... def test puts "Whats your name?" name = gets "Hello" + name.chomp + "あなたはどうですか?" endテストを実行します。わたしにはできる。 – Laurie

+0

私はまた、コードでtest.rbを作成します。puts "Whats your name?" name = gets "Hello" + name.chomp + "あなたはどうですか?" ...それは働いた>ルビーtest.rb – Laurie

3

をテストすることができます。あなたは

ruby program.rb program.rb 

を実行しているとき、あなたの説明の動作はこれはすべての場合にSTDINから読み取れませんgetsので、それがないように動作し、再現可能です。その代わりに、コマンドラインで最初に言及したファイルを最初に読み込む方が好きです。コマンドラインに追加ファイルがない場合のみ、STDIN

ルビープログラムのファイル名を渡す理由についての質問は残念ながらあまり明確ではありません。あなた自身でこのように呼び出さなければ、これはあなたのシェル内のいくつかの奇妙な環境オプションやRubyの設定のせいで引き起こされるかもしれません。

0

@Ray潘私はgets.rbファイル内

puts "Whats your name?" 
name = gets 
puts "Hello" + name + ". How are you?" 

あなたのコードを使用して$ルビーgets.rbを使用してそれを実行し、期待どおりに働いています。私が使用しています

ルビー2.3.0

関連する問題