Answers:
你在说什么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
并且仅在找不到时要求控制台ARGV
。即使ARGV
不是空的也要强制从控制台读取,请使用STDIN.gets
。
a.to_i
并且b.to_i
可以更好地
gets
阻止?如果不是,是否有任何替代品正在阻碍?
有很多方法可以从用户那里获取输入。我个人喜欢使用该方法获取。使用get时,它将获取 您键入的字符串,其中包括您按下以结束输入的ENTER键。
name = gets
"mukesh\n"
您可以在irb中看到此内容;键入此内容,您将看到\ n,它是ENTER键产生的“换行符”:键入
name = gets
您将看到类似内容,"mukesh\n"
您可以使用chomp方法摆脱讨厌的换行符。
chomp方法为您返回字符串,但没有终止换行符。美丽的排骨方法的生命救星。
name = gets.chomp
"mukesh"
您也可以使用终端读取输入。ARGV是在Object 类中定义的常量。它是Array类的实例,可以访问所有数组方法。由于它是一个数组,即使它是一个常量,也可以毫无问题地修改和清除其元素。默认情况下,在调用命令行二进制文件时,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
用法(假设您将摘要上方的代码放入summator
当前目录中的文件中):
chmod +x summator
./summator
> 1
1 = 1
> 2
1 + 2 = 3
使用Ctrl + D
退出