在Ruby中从控制台读取输入?

Ser*_*gey 110 ruby console

我想在ruby中编写一个简单的A + B程序,但我不知道如何使用控制台.

sia*_*ame 218

你在说什么gets

puts "Enter A"
a = gets.chomp
puts "Enter B"
b = gets.chomp
c = a.to_i + b.to_i
puts c
Run Code Online (Sandbox Code Playgroud)

那样的东西?

更新

Kernel.gets尝试读取找到的参数,ARGV如果没有ARGV找到,只询问控制台.即使ARGV不是空的,也要强制从控制台读取STDIN.gets

  • 我与这个解决方案有冲突:`Kernel.gets`尝试读取`ARGV`中找到的文件,如果没有找到'ARGV`则只询问控制台.即使`ARGV`不为空,强制从控制台读取使用`STDIN.gets`. (59认同)
  • `a.to_i`和`b.to_i`可能会更好 (3认同)
  • @Yar感谢您的建议,我已经在答案中添加了_update_. (2认同)

rik*_*len 28

您也可以通过命令行传递参数.命令行参数是数组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
Run Code Online (Sandbox Code Playgroud)

你就这样称呼它

% ./plus.rb 5 6
==> 11
Run Code Online (Sandbox Code Playgroud)


Muk*_*pta 9

有许多方法可以从用户那里获取输入.我个人喜欢使用方法获取.当您使用gets时,它会获取 您键入的字符串,并包含您按下以结束输入的ENTER键.

name = gets
"mukesh\n"
Run Code Online (Sandbox Code Playgroud)

你可以在irb中看到这个; 输入这个,你会看到\n,这是ENTER键产生的"换行符"字符:键入name = gets你会看到像"mukesh\n" 你可以使用chomp方法摆脱讨厌的换行符.

chomp方法返回字符串,但没有终止换行符.美丽的chomp方法生活救星.

name = gets.chomp
"mukesh"
Run Code Online (Sandbox Code Playgroud)

您也可以使用终端读取输入.ARGVObject 类中定义的常量.它是Array类的一个实例,可以访问所有数组方法.因为它是一个数组,即使它是一个常量,它的元素也可以毫无问题地修改和清除.默认情况下,Ruby在调用命令行二进制文件时捕获传递给Ruby程序的所有命令行参数(用空格分隔),并将它们作为字符串存储在ARGV数组中.

在Ruby程序中编写时,ARGV将采用如下所示的命令行命令:

test.rb hi my name is mukesh
Run Code Online (Sandbox Code Playgroud)

并创建一个如下所示的数组:

["hi", "my", "name", "is", "mukesh"]
Run Code Online (Sandbox Code Playgroud)

但是,如果我想通过有限的输入,那么我们可以使用这样的东西.

test.rb 12 23
Run Code Online (Sandbox Code Playgroud)

并在您的程序中使用这样的输入:

a = ARGV[0]
b = ARGV[1]
Run Code Online (Sandbox Code Playgroud)


ril*_*ham 5

如果要保留终端中的参数,请尝试以下代码:

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

puts "#{A} + #{B} = #{A + B}"
Run Code Online (Sandbox Code Playgroud)