Ruby on Rails

Ruby 메타프로그래밍

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 면접 질문·
Senior
1

Ruby에서 메타프로그래밍이란 무엇입니까?

답변

메타프로그래밍은 프로그램이 런타임에 코드를 작성하거나 수정할 수 있는 능력입니다. Ruby에서는 이를 통해 메서드, 클래스, 모듈을 동적으로 정의할 수 있어 코드를 더 유연하고 간결하게 만듭니다. 이 기법은 Rails와 같은 프레임워크에서 우아한 DSL을 만들고 코드 중복을 줄이기 위해 널리 사용됩니다.

2

Ruby에서 define_method 메서드의 목적은 무엇입니까?

답변

define_method를 사용하면 런타임에 동적으로 메서드를 생성할 수 있습니다. 메서드 이름(심볼 또는 문자열)과 메서드 본문을 정의하는 블록을 받습니다. def와 달리 define_method는 closure를 통해 둘러싼 스코프의 지역 변수를 캡처하므로, 매개변수화된 동작을 가진 메서드를 생성하는 데 유용합니다.

3

method_missing 메서드는 Ruby에 의해 언제 호출됩니까?

답변

method_missing은 객체가 자신의 상속 체인에 존재하지 않는 메서드 호출을 받을 때 자동으로 호출됩니다. 호출된 메서드의 이름과 인자를 받아 이러한 호출을 동적으로 처리할 수 있습니다. 이는 ActiveRecord에서 사용되는 ghost methods와 같은 여러 메타프로그래밍 패턴의 기반입니다.

4

class_eval과 instance_eval의 주요 차이점은 무엇입니까?

5

module이 클래스에 include될 때 어떤 hook이 호출됩니까?

+17 면접 질문

다음 면접을 위해 Ruby on Rails을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기