
เมตาโปรแกรมมิงใน Ruby
define_method, method_missing, class_eval, instance_eval, hooks, DSLs
1เมตาโปรแกรมมิงใน Ruby คืออะไร?
เมตาโปรแกรมมิงใน Ruby คืออะไร?
คำตอบ
เมตาโปรแกรมมิงคือความสามารถของโปรแกรมในการเขียนหรือแก้ไขโค้ดขณะรันไทม์ ใน Ruby สิ่งนี้ช่วยให้สามารถกำหนด method, class และ module แบบไดนามิกได้ ทำให้โค้ดยืดหยุ่นและกระชับมากขึ้น เทคนิคนี้ถูกใช้อย่างแพร่หลายในเฟรมเวิร์กอย่าง Rails เพื่อสร้าง DSL ที่สวยงามและลดการเขียนโค้ดซ้ำ
2วัตถุประสงค์ของเมธอด define_method ใน Ruby คืออะไร?
วัตถุประสงค์ของเมธอด define_method ใน Ruby คืออะไร?
คำตอบ
define_method ช่วยให้สร้างเมธอดได้แบบไดนามิกในระหว่างรันไทม์ โดยรับชื่อเมธอด (symbol หรือ string) และ block ที่กำหนดเนื้อหาของเมธอด ต่างจาก def ตรงที่ define_method จับตัวแปรท้องถิ่นจาก scope ที่ครอบอยู่ผ่าน closure ซึ่งมีประโยชน์สำหรับการสร้างเมธอดที่มีพฤติกรรมแบบกำหนดพารามิเตอร์ได้
3เมธอด method_missing ถูกเรียกโดย Ruby เมื่อใด?
เมธอด method_missing ถูกเรียกโดย Ruby เมื่อใด?
คำตอบ
method_missing จะถูกเรียกโดยอัตโนมัติเมื่ออ็อบเจกต์ได้รับการเรียกเมธอดที่ไม่มีอยู่ในสายการสืบทอดของมัน โดยจะได้รับชื่อของเมธอดที่ถูกเรียกพร้อมกับอาร์กิวเมนต์ ทำให้สามารถจัดการกับการเรียกเหล่านี้ได้แบบไดนามิก นี่คือพื้นฐานของแพตเทิร์น metaprogramming หลายแบบ เช่น ghost methods ที่ใช้ใน ActiveRecord
ความแตกต่างหลักระหว่าง class_eval และ instance_eval คืออะไร?
hook ใดถูกเรียกเมื่อ module ถูก include เข้าไปในคลาส?
+17 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Ruby on Rails อื่นๆ
พื้นฐาน Ruby
การเขียนโปรแกรมเชิงวัตถุใน Ruby
พื้นฐาน Rails
Routing & Controllers
พื้นฐาน ActiveRecord
Views และ ERB Templates
การเชื่อมโยงของ ActiveRecord
การสอบถาม ActiveRecord ขั้นสูง
ฟอร์ม Rails
การยืนยันตัวตนและการอนุญาต
Asset Pipeline สมัยใหม่และ frontend
โหมด API ของ Rails
การทดสอบด้วย RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
กลยุทธ์การ Caching
การ Migration ขั้นสูง
Rails Engines และแอปแบบโมดูลาร์
การเพิ่มประสิทธิภาพการทำงาน
Design Patterns ใน Rails
ความปลอดภัยของ Rails
GraphQL กับ Rails
การดีพลอยและโปรดักชัน
Monitoring & Logging
กลยุทธ์การอัปเกรด Rails
เชี่ยวชาญ Ruby on Rails สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี