루비

2011-10-17 2 views
12

에서 개체의 방법 내가 루비 (1.9) 통역 지금까지루비

class Foo 
    def pub 
    private_thing 
    end 

    private 
    def private_thing 
    puts "private touch" 
    end 
end 



x = Foo.new 
x.pub 
private touch 
=> nil 

좋지에서이 문제에 대한 약간의 혼란 스러워요 얻을.

x.private_thing 
NoMethodError: private method `private_thing' called for #<Foo:0xb76abd34> 
from (irb):25 
from :0 

여전히 괜찮습니다. 그게 내가 원하는거야

왜 비어 있나?

x.methods(false) 
=> [] 

이것은 내가 기대했던 것입니다.

Foo.instance_methods(false) 
=> ["pub"] 

답변

1

ruby ​​1.9.1을 (를) 넘는 Object # 메소드에 대한 설명서가없는 것 같습니다. 마치 존재하지 않는 것처럼. (http://www.ruby-doc.org/core-1.9.3/Object.html을보십시오)

나는이 방법이 .singleton_methods 또는 .instance_methods 중 하나를 사용하여 메소드가 어디에 있는지 결정해야한다고 설명하기를 원한다고 가정합니다.

어쨌든 문서화되지 않은 방법은 원하는대로 할 수 있습니다.