Ruby on Rails

Metaprogramming Ruby

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 pertanyaan wawancara·
Senior
1

Apa itu metaprogramming dalam Ruby?

Jawaban

Metaprogramming adalah kemampuan sebuah program untuk menulis atau memodifikasi kode saat runtime. Di Ruby, hal ini memungkinkan pendefinisian method, class, dan module secara dinamis, sehingga kode menjadi lebih fleksibel dan ringkas. Teknik ini banyak digunakan dalam framework seperti Rails untuk membuat DSL yang elegan dan mengurangi duplikasi kode.

2

Apa tujuan dari metode define_method di Ruby?

Jawaban

define_method memungkinkan pembuatan metode secara dinamis saat runtime. Ia menerima nama metode (symbol atau string) dan sebuah block yang mendefinisikan badan metode. Berbeda dengan def, define_method menangkap variabel lokal dari scope di sekitarnya melalui sebuah closure, yang berguna untuk menghasilkan metode dengan perilaku yang terparameterisasi.

3

Kapan metode method_missing dipanggil oleh Ruby?

Jawaban

method_missing dipanggil secara otomatis ketika sebuah objek menerima panggilan metode yang tidak ada dalam rantai pewarisannya. Ia menerima nama metode yang dipanggil beserta argumennya, sehingga memungkinkan penanganan panggilan tersebut secara dinamis. Ini adalah dasar dari banyak pola metaprogramming seperti ghost methods yang digunakan di ActiveRecord.

4

Apa perbedaan utama antara class_eval dan instance_eval?

5

Hook mana yang dipanggil ketika sebuah module di-include ke dalam sebuah kelas?

+17 pertanyaan wawancara

Kuasai Ruby on Rails untuk wawancara berikutnya

Akses semua pertanyaan, flashcards, tes teknis, latihan code review dan simulator wawancara.

Mulai gratis