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

时间:2011-07-02 09:53:12

标签: ruby console

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

5 个答案:

答案 0 :(得分:208)

您在谈论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

答案 1 :(得分: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

你可以这样称呼它

% ./plus.rb 5 6
==> 11

答案 2 :(得分:8)

有很多方法可以从用户那里获取输入。我个人喜欢     使用方法得到。当您使用gets时,它会获得字符串     您键入的内容,包括您按下的 ENTER 键     结束你的意见。

<?php
require('cron_config.php');

foreach (glob("../files/out/orderstatus_*.csv") as $filename) {
echo "$filename \n";
}

// Open and parse the sales.csv file
$fh = fopen("$filename", "r");

while ($line = fgetcsv($fh, 1000, ","))
{
    $order_id = $line[0];
    $order_status_id = $line[1];
    $date_modified = $line[2];

    // Insert the data into the sales table
    $query = "UPDATE oc_order o SET order_status_id='$order_status_id',
        date_modified='$date_modified' WHERE order_id = '$order_id'";

    $result = $mysqli->query($query);
}

fclose($fh);
unlink("$filename");
$mysqli->close();
?>
  

您可以在 irb 中看到这一点;输入这个,你会看到\ n,这是ENTER键产生的“换行符”字符:   输入name = gets "mukesh\n" ,您会看到name = gets之类的内容   您可以使用 chomp 方法摆脱讨厌的换行符字符。

chomp方法会返回字符串,但没有终止换行符。美丽的chomp方法生活救星。

"mukesh\n"

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

在Ruby程序中编写时, ARGV 将采用如下所示的命令行命令:

name = gets.chomp
"mukesh"

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

test.rb hi my name is mukesh

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

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

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

test.rb 12 23

答案 3 :(得分:5)

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

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

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

答案 4 :(得分:0)

如果要创建交互式控制台:

#!/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退出