Ruby on Rails

Ruby Metaprogramlama

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 mülakat soruları·
Senior
1

Ruby'de metaprogramlama nedir?

Cevap

Metaprogramlama, bir programın çalışma zamanında kod yazma veya değiştirme yeteneğidir. Ruby'de bu, method, class ve module'lerin dinamik olarak tanımlanmasını sağlayarak kodu daha esnek ve özlü hale getirir. Bu teknik, zarif DSL'ler oluşturmak ve kod tekrarını azaltmak için Rails gibi framework'lerde yaygın olarak kullanılır.

2

Ruby'de define_method metodunun amacı nedir?

Cevap

define_method, çalışma zamanında dinamik olarak metot oluşturmaya olanak tanır. Bir metot adı (symbol veya string) ve metot gövdesini tanımlayan bir block alır. def'in aksine define_method, bir closure aracılığıyla çevreleyen scope'taki yerel değişkenleri yakalar; bu da parametreli davranışlara sahip metotlar üretmek için kullanışlıdır.

3

method_missing metodu Ruby tarafından ne zaman çağrılır?

Cevap

method_missing, bir nesne kalıtım zincirinde bulunmayan bir metot çağrısı aldığında otomatik olarak çağrılır. Çağrılan metodun adını ve argümanlarını alarak bu çağrıların dinamik olarak ele alınmasını sağlar. Bu, ActiveRecord'da kullanılan ghost methods gibi birçok metaprogramming kalıbının temelidir.

4

class_eval ile instance_eval arasındaki temel fark nedir?

5

Bir module bir sınıfa include edildiğinde hangi hook çağrılır?

+17 mülakat soruları

Bir sonraki mülakatın için Ruby on Rails'de uzmanlaş

Tüm sorulara, flashcards'a, teknik testlere, code review alıştırmalarına ve mülakat simülatörlerine eriş.

Ücretsiz başla