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

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

161957 次浏览

你是在说 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中找到的参数,如果没有找到 ARGV,则仅请求控制台。要强制从控制台读取,即使 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

如果要保存 Terminal 中的参数,请尝试以下代码:

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


puts "#{A} + #{B} = #{A + B}"

从用户那里获取信息的方法有很多,我个人喜欢 当您使用 gets 时,它将获得 绳子 包括按下的 进入键 结束你的投入。

name = gets
"mukesh\n"

您可以在 IRB中看到这一点; 键入 this,您将看到 n,它是 ENTER 键生成的“ newline”字符: 键入 name = gets,您将看到类似于 "mukesh\n"的内容 你可以使用 方法摆脱讨厌的 新线字符。

Chomp 方法返回字符串,但没有结束换行符。

name = gets.chomp
"mukesh"

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

在 Ruby 程序中编写时,ARGV会接受一个命令行命令,如下所示:

test.rb hi my name is mukesh

并创建一个如下的数组:

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

但是,如果我想要传递有限的输入,那么我们可以使用类似这样的东西。

test.rb 12 23

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

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

如果你想制作交互式控制台:

#!/usr/bin/env ruby


require "readline"
addends = []
while addend_string = Readline.readline("> ", true)
addends << addend_string.to_i
puts "#{addends.join(' + ')} = #{addends.sum}"
end

使用方法(假设你把上面的代码片段放到工作目录的 ABc0文件中) :

chmod +x summator
./summator
> 1
1 = 1
> 2
1 + 2 = 3

使用 Ctrl + D退出