簡體   English   中英

Ruby:STDIN.gets是什么意思?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM