Ruby's Main Object

Ruby ถูกออกแบบขึ้นมาภายใต้หลักการของ Object นั้นทำให้ทุกสิ่งทุกอย่างที่อยู่ภายใต้การทำงาน Ruby ล้วนเป็น Object ทั้งหมด โดย Object ที่เป็น Top Level จะเรียกว่า Main Object ซึ่งเมธอดที่ถูกนิยามภายใต้ Main Object สามารถที่จะถูกเรียกจากที่ไหนก็ได้ ยกตัวอย่างเช่นการที่เราเรียกใช้เมธอด puts, respond_to? หรือ is_a? ได้ทุกๆ ที่

จริงๆ แล้ว Main Object จะถูกสร้างเป็น instance หนึงขึ้นมาเมื่อโปรแกรมรันหรือเปิด IRB

main object Main Object ใน IRB

เราสามารถนิยามเมธอดที่สามารถเรียกใช้งานได้จากทุกๆ ที่ได้ง่ายๆ เพียงแค่นิยามเมธอดไว้ด้านนอกคลาส หรือโมดูลเท่านั้น Ruby จะก็จะผูกเมธอดนั้นๆ เข้ากับ Main Object ให้เราโดยอัตโนมัติ

ลองนิยามเมธอด show_message มาทดสอบกัน

main object show_message in irb

สิ่งหนึ่งที่มีความแตกต่างกันระหว่างการนิยามเมธอดใน IRB กับในไฟล์ Ruby ก็คือ IRB จะผูกเมธอดที่นิยามในขอบเขตที่เป็น public แต่ในไฟล์จะถูกผูกในขอบเขตที่เป็น private อันนี้ต้องไปลองเล่นดูได้นะครับ จะได้เห็นความแตกต่าง

References