在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
尝试读取在ARGV
find的参数,并且只有在未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键生成的“换行”字符:types
name = 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]