내가 나를루비 메타 프로그래밍
Policy.name do
author "Foo"
reviewed_by "Bar"
end
은 다음 코드는 거의 처리 할 수 있습니다 할 수있는 DSL 작성하려고 해요 :
class Policy
include Singleton
def self.method_missing(name,&block)
puts name
puts "#{yield}"
end
def self.author(name)
puts name
end
def self.reviewed_by(name)
puts name
end
end
클래스 메소드로 내 방법을 정의를 (self.method_name) 다음 구문을 사용하여 액세스 할 수 있습니다.
Policy.name do
Policy.author "Foo"
Policy.reviewed_by "Bar"
end
메서드 이름에서 "self"를 제거하고 원하는 구문을 사용하면 모듈 "Kernel"까지 내 함수를 찾을 수 없으므로 "Method not Found"오류가 Main에 나타납니다. 그 ok, 나는 그 오류를 이해한다. 하지만 어떻게 해결할 수 있습니까? 클래스를 수정하여 원하는 구문으로 작동하도록하려면 어떻게해야합니까?
안녕하세요, 저는 8 월에 루비 메타 프로그래밍을 사용하고 있는데 예제와 설명이 도움이되었습니다. StackOverflow 규칙! –