在Ruby中从控制台读取input?

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

你在谈论gets

 puts "Enter A" a = gets.chomp puts "Enter B" b = gets.chomp c = a.to_i + b.to_i puts c 

类似的东西?

更新

Kernel.gets尝试读取在ARGVfind的参数,并且只有在未findARGV时才要求进行控制。 即使ARGV不是空的, STDIN.gets强制从控制台读取,使用STDIN.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 

如果你想从terminal持有参数,请尝试下面的代码:

 A = ARGV[0].to_i B = ARGV[1].to_i puts "#{A} + #{B} = #{A + B}" 

有很多方法可以从用户那里获得input。 我个人喜欢使用方法获取。 当您使用获取时,它会得到您键入的string ,并包括您按下以结束您的input的ENTER键。

 name = gets "mukesh\n" 

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

chomp方法给你回string,但没有终止的换行符。 美丽的chomp方法救世主。

 name = gets.chomp "mukesh" 

您也可以使用terminal来读取input。 ARGV是在Object 类中定义的一个常量。 它是Array类的一个实例,可以访问所有的数组方法。 由于它是一个数组,即使它是一个常量,它的元素也可以被修改和清除,而不会造成麻烦。 默认情况下,当调用命令行二进制文件时,Ruby会捕获传递给Ruby程序的所有命令行参数(以空格分隔),并将它们作为string存储在ARGV数组中

当你写在你的Ruby程序中时, ARGV将采取如下的命令行命令:

 test.rb hi my name is mukesh 

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

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

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

 test.rb 12 23 

并在程序中使用这些input:

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