Ruby:STDIN.gets是什么意思?

时间:2016-05-17 23:44:51

标签: ruby io

最近,我正在阅读遗留的ruby脚本,并希望将其中一些转换为python。

我理解'STDIN'的概念并完成了一些谷歌搜索。但是,没有关于这个独立声明的文档:'STDIN.gets'。什么是回报值?它是否秘密获取所有输入并将其存储在某些默认位置,或者它只是一段未完成的无意义遗留代码我应该删除?

2 个答案:

答案 0 :(得分:1)

如果您运行p STDIN.method(:gets),则会获得#<Method: IO#gets>。这意味着如果在IO模块中定义了gets方法。知道了,您可以在这里阅读gets的官方文档:

http://ruby-doc.org/core-2.3.0/IO.html#method-i-gets

gets方法不会将其数据存储在某个默认位置,而是将其作为方法的返回值返回。如果忽略该返回值,则数据会丢失,但为其副作用调用STDIN.gets仍然有用:gets将暂停执行您的线程并等待来自标准输入。这将使用户有机会查看Ruby脚本已经完成的操作,并在用户想要的时候提前终止它。

答案 1 :(得分:0)

使用Ruby时,irb是您的朋友。 irb是交互式Ruby shell或REPL。你可以在irb:

中试试你的陈述
2.3.0 :001 > STDIN.gets
hello
 => "hello\n"

输入STDIN.gets后,系统等待输入。我键入hello,然后按Enter键。 irb表示表达式的返回值为"hello\n"

这表明:

1)gets仅在用户按Enter或等效时返回。

2)gets返回键入,粘贴等字符串,包括终止Enter键。

你可能会在gets返回的字符串上看到很多对chomp的调用。这是因为很少需要尾随“\ n”。 chomp返回删除了“\ n”的字符串。