2013-08-23 2 views
3

생성자의 매개 변수 이름을 검색하려고합니다. 다음 코드를 감안할 때 :생성자의 매개 변수 이름 얻기

class Something 
    def self.do_something(a, b); end 
    def initialize(a, b); end 
end 

내가 얻을 :

Something.method(:do_something).parameters 
# => [[:req, :a], [:req, :b]] 
Something.method(:new).parameters 
# => [[:rest]] 

Method#parametersnew의 경우 [[:rest]]을 반환하고, 어떻게 생성자의 매개 변수를받을 수 있나요?

+0

* + 1은 좋은 연구 ... –

답변

6

, 당신은 Something::new의 매개 변수를 얻을 것이다. 당신이 Something#initialize의 매개 변수를 알고 싶은 경우에, 당신은 Something#initialize을 요청해야합니다

Something.instance_method(:initialize).parameters 
# => [[:req, :a], [:req, :b]] 
1

왜냐하면 Something.new이 취하는 인수는 모두 선택 사항이기 때문입니다. 어떤 수의 인수도 Something.new에 전달할 수 있습니다. Something.new은 지정된 인수를 사용하지 않고 인스턴스를 만들고, 주어진 인수 세트 전체를 Something#initialize에 전달하고, 특정 수의 인수로 메소드를 정의한 것입니다.

당신이 원하는 것을 얻으려면, 당신은 직접 Something#initialize를 참조해야합니다 당신이 Something::new의 매개 변수에 대해 묻는다면

Something.instance_method(:initialize).parameters 
# => [[:req, :a], [:req, :b]] 
+0

좋은 하나 ... : 나는 그 시점까지 생각하지 않았다 * .. 그래서 내 대답을 삭제 .. .. (하지만 당신은 당신의 선물을 가지고 있어야합니다 .. * * 1 * .. –