我想用 Ruby 编写一个简单的 A + B 程序,但我不知道如何使用控制台。
你是在说 gets吗?
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
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
如果要保存 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"的内容 你可以使用 咬方法摆脱讨厌的 新线字符。
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退出
Ctrl + D