![](/img/trans.png)
[英]Ruby: What's the difference between STDIN.gets() and gets.chomp()?
[英]Ruby: What Does STDIN.gets mean?
最近,我正在閱讀舊版的ruby腳本,希望將其中的一些轉換為python。
我了解“ STDIN”的概念,並做了一些Google搜索。 但是,沒有有關此獨立聲明的文檔:“ STDIN.gets”。 返回值是多少? 它是秘密獲取所有輸入並將其存儲在某些默認位置,還是僅僅是我應該刪除的未完成的,毫無意義的舊代碼?
如果運行p STDIN.method(:gets)
則會得到#<Method: IO#gets>
。 這意味着,如果在IO模塊中定義了gets
方法。 知道這一點之后,您可以gets
此處閱讀get的官方文檔:
http://ruby-doc.org/core-2.3.0/IO.html#method-i-gets
gets
方法不會將其數據存儲在某個默認位置,而是將其作為方法的返回值返回。 如果忽略該返回值,則數據將丟失,但是調用STDIN.gets
仍然有其副作用,這仍然很有用: gets
將暫停線程的執行並等待標准輸入的輸入。 這將使用戶有機會查看Ruby腳本已完成的操作,並在用戶願意的情況下盡早終止它。
使用Ruby時, irb
是您的朋友。 irb是交互式Ruby shell或REPL。 您可以在irb中嘗試您的語句:
2.3.0 :001 > STDIN.gets
hello
=> "hello\n"
輸入STDIN.gets
,系統等待輸入。 我打了hello
,然后按Enter鍵。 irb表示表達式的返回值為"hello\\n"
。
這表明:
1)僅在用戶按Enter或等效按鈕時gets
返回。
2) gets
返回鍵入,粘貼等的字符串,包括終止的Enter鍵。
您可能會看到很多關於chomp
返回的字符串的chomp
調用。 這是因為很少需要結尾的“ \\ n”。 chomp
返回刪除了“ \\ n”的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.