最近,我正在阅读遗留的ruby脚本,并希望将其中一些转换为python。
我理解'STDIN'的概念并完成了一些谷歌搜索。但是,没有关于这个独立声明的文档:'STDIN.gets'。什么是回报值?它是否秘密获取所有输入并将其存储在某些默认位置,或者它只是一段未完成的无意义遗留代码我应该删除?
答案 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”的字符串。