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
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)
有许多方法可以从用户那里获取输入.我个人喜欢使用方法获取.当您使用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)
您也可以使用终端读取输入.ARGV是Object 类中定义的常量.它是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)
如果要保留终端中的参数,请尝试以下代码:
A = ARGV[0].to_i
B = ARGV[1].to_i
puts "#{A} + #{B} = #{A + B}"
Run Code Online (Sandbox Code Playgroud)