它們是相同的,還是兩個命令之間存在細微差別?gets.chomp()與STDIN.gets.chomp()之間有什麼區別?
30
A
回答
35
gets
將使用Kernel#gets
,它首先嚐試讀取通過ARGV
傳入的文件的內容。如果在ARGV
沒有文件,它將使用標準輸入,而不是(此時它一樣STDIN.gets
注意:由於echristopherson指出,Kernel#gets
實際上將回落到$stdin
,不STDIN
但是,除非你分配$stdin
到不同的輸入流,這將是相同STDIN
默認。
http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-gets
19
3
因爲 如果有東西在ARGV,默認獲得方法試圖把第一個爲文件和讀取從 。要在這種情況下從用戶的輸入(即stdin)中讀取,你必須明確地使用STDIN.gets的 。
4
如果您color.rb文件
first, second, third = ARGV
puts "Your first fav color is: #{first}"
puts "Your second fav color is: #{second}"
puts "Your third fav color is: #{third}"
puts "what is your least fav color?"
least_fav_color = gets.chomp
puts "ok, i get it, you don't like #{least_fav_color} ?"
,你在終端
$ ruby color.rb blue yellow green
它會拋出一個錯誤(沒有這樣的文件錯誤)
現在替換「得到運行.chomp'通過'stdin.gets.chomp'在下面的線上
least_fav_color = $stdin.gets.chomp
,並在終端中運行命令
$ ruby color.rb blue yellow green
那麼你的程序運行以下!
基本上,一旦你開始從動態調用ARGV(如ARGV的設計),gets.chomp就無法正常工作了。時間帶來大炮:$ stdin.gets.chomp
+0
紅寶石白色腰帶目前在這裏鑿過紅寶石堅硬路的花崗岩牆壁,這一章讓我難住,直到我找到你的解釋。感謝你! – user2136000
相關問題
- 1. gets,gets.chomp和gets.chomp之間的區別!?
- 2. DesiredCapabilities與RequiredCapabilities之間有什麼區別?
- 3. Console.WriteLine()與Debug.WriteLine()之間有什麼區別?
- 4. 「層」和「層」之間有什麼區別?
- 5. Tableau和QlikView之間有什麼區別
- 6. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 7. @Entity和@embeddable之間有什麼區別
- 8. ContentObservable和DataSetObservable之間有什麼區別?
- 9. touchmove和gesturechange之間有什麼區別?
- 10. 這兩行之間有什麼區別?
- 11. :notification.flags和notification.defaults之間有什麼區別?
- 12. proc和lambda之間有什麼區別?
- 13. :: after和after之間有什麼區別?
- 14. read()和io.read()之間有什麼區別?
- 15. Request()和Request.Form()之間有什麼區別?
- 16. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 17. getA()和this.getA()之間有什麼區別?
- 18. (int)和intval()之間有什麼區別?
- 19. set_value和= pandas之間有什麼區別
- 20. * zoom和zoom之間有什麼區別?
- 21. {0}和「」之間有什麼區別?
- 22. typedef和using之間有什麼區別?
- 23. 「」和「'之間有什麼區別?
- 24. STDIN和tty之間有什麼區別?
- 25. +和%之間有什麼區別?
- 26. sysfs_create_file()和sysfs_create_group()之間有什麼區別?
- 27. Lazy.Force()和Lazy.Value之間有什麼區別
- 28. -existingObjectWithID:error:和-objectWithID之間有什麼區別?
- 29. ReleaseFloatArrayElements和DeleteLocalRef之間有什麼區別
- 30. AutomationProperties.AutomationID和AutomationProperties.Name之間有什麼區別?
感謝您的解釋。很難查看文檔中的差異。 – stanigator
它不會回退到$標準輸入,它恰好經常與標準輸入相同? – echristopherson
良好的通話,更新。 –