2
attr_reader
메서드와 비슷한 Ruby에서 return_empty_set
클래스 메서드를 사용하고 싶습니다.Ruby 메타 프로그래밍에서 class_eval 피하기
class Foo
return_empty_set :one
end
Foo.new.one # returns #<Set: {}>
하지만, 캐릭터에 의존하는 것은 매우 해킹처럼 보인다 : 내 제안 된 구현은
class Class
def return_empty_set *list
list.each do |x|
class_eval "def #{x}; Set.new; end"
end
end
end
예를 사용합니다. 이것을 작성하는 더 깨끗한 방법이나 더 좋은 방법이 있습니까, 아마도 class_eval
을 피해야할까요? 아니면 이것이 최선의 방법입니까?
우수, 감사합니다. 그리고 당신 말이 맞아요.이 모듈은'Module' 아래에 있어야합니다. 그때부터이 기능을'include '할 수 있기 때문입니다. – Peter
그게 무슨 뜻인지 모르겠지만,'Module'에 넣는 이유는'Module' 정의 (나중에 포함될 것입니다)와'Class' '안에있을 때 사용할 수 있다는 것입니다. –
예, 그것이 내가 의미했던 것입니다. – Peter