ทั้งสอง$stdout
และSTDOUT
มีความหมายที่แตกต่างกัน เอกสารของ Rubyค่อนข้างชัดเจนในหัวข้อนี้:
$stdout
- เอาต์พุตมาตรฐานปัจจุบัน
STDOUT
- เอาต์พุตมาตรฐาน ค่าเริ่มต้นสำหรับ $ stdout
เมื่อคุณต้องการที่จะเขียนถึงมาตรฐานการส่งออกแล้วคุณจริงหมายถึงปัจจุบัน$stdout
ออกมาตรฐานดังนั้นคุณควรจะเขียนถึง
STDOUT
ก็ไม่ไร้ประโยชน์เช่นกัน $stdout
มันเก็บค่าเริ่มต้นสำหรับ ถ้าคุณเคยโอนแล้วคุณสามารถเรียกคืนไปยังค่าก่อนหน้านี้ที่มี$stdout
$stdout = STDOUT
นอกจากนี้ยังมีตัวแปรที่กำหนดไว้ล่วงหน้าอีกหนึ่งตัวแปร:
$>
- เอาต์พุตเริ่มต้นสำหรับ print, printf ซึ่งเป็น$stdout
ค่าเริ่มต้น
อย่างไรก็ตามดูเหมือนว่าใน Ruby 2.3 จะทำงานเป็นนามแฝงสำหรับ$stdout
. การกำหนดใหม่$stdout
จะเปลี่ยนค่าของ$>
และในทางกลับกัน