8
부모 클래스의 클래스 메서드를 통해 자식 클래스의 인스턴스 메서드를 동적으로 만들고 싶습니다.어떻게 루비에서 인스턴스 메소드를 동적으로 정의 할 수 있습니까?
class Foo
def self.add_fizz_method &body
# ??? (This is line 3)
end
end
class Bar < Foo
end
Bar.new.fizz #=> nil
class Bar
add_fizz_method do
p "i like turtles"
end
end
Bar.new.fizz #=> "i like turtles"
3 번 줄에 무엇을 적 으시겠습니까?
거의 내가 필요. 문제는 - & block's self는 Bar의 인스턴스 여야합니다. 그래서 다음과 같이 작성할 수 있습니다 : class Bar; add_fizz_method do; p self.bar_name; 끝; 끝 –
'p '아래에'p self.class'를 시도해보십시오.'p ''나는 거북이를 좋아합니다. 'self'는 이미'Bar'의 인스턴스입니다. –
Btw :'add_fizz_method'를 호출하기 전에'NoMethodError'를 던지는 대신에'nil'을 리턴하기 원한다면'Foo' 클래스에 빈'fizz' 메소드를 선언 할 수 있습니다. –