我想用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
中找到的参数,如果存在则不会要求输入控制台。如果想强制从控制台读取参数,请使用 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
有许多方法可以从用户那里获取输入。我个人喜欢使用gets方法。当您使用gets时,它会获取您键入的字符串,其中包括您按下的ENTER键以结束您的输入。
name = gets
"mukesh\n"
在irb中可以看到这一点;输入以下内容,您将看到“换行符”(即ENTER键生成的字符):键入
name = gets
,您将看到类似于"mukesh\n"
的东西。使用chomp方法可轻松摆脱烦人的换行符字符。
chomp方法会返回字符串,但不包括结束的换行符。美妙的chomp方法就像救命稻草。
name = gets.chomp
"mukesh"
您还可以使用终端来读取输入。 ARGV 是在Object类中定义的常量。它是Array类的一个实例,并且具有访问所有数组方法的权限。由于它是一个数组,即使它是一个常量,它的元素也可以轻松修改和清除。默认情况下,当调用命令行二进制文件并将其作为字符串存储在ARGV数组中时,Ruby会捕获传递给Ruby程序的所有命令行参数(通过空格分隔)。
当在您的Ruby程序中编写时,ARGV 将接受像这样的命令行命令:
test.rb hi my name is mukesh
并创建一个看起来像这样的数组:
["hi", "my", "name", "is", "mukesh"]
但是,如果我想要通过有限的输入,则可以使用类似以下的方法。
test.rb 12 23
然后在你的程序中这样使用那些输入:
a = ARGV[0]
b = ARGV[1]
A = ARGV[0].to_i
B = ARGV[1].to_i
puts "#{A} + #{B} = #{A + B}"
#!/usr/bin/env ruby
require "readline"
addends = []
while addend_string = Readline.readline("> ", true)
addends << addend_string.to_i
puts "#{addends.join(' + ')} = #{addends.sum}"
end
summator
文件中):chmod +x summator
./summator
> 1
1 = 1
> 2
1 + 2 = 3
使用 Ctrl + D
退出
Kernel.gets
尝试读取在ARGV
中找到的文件,只有当没有ARGV
时才询问控制台。如果想强制从控制台读取,即使ARGV
不为空,请使用STDIN.gets
。 - fguillena.to_i
和b.to_i
可以改进。to_i
是将对象转换为整数的方法。 - Doriangets
是阻塞的吗?如果不是,有没有任何替代品是阻塞的? - noMAD