2014-05-21 4 views
0

나는 http://www.ruby-doc.org/core-2.1.1/Method.html을 읽었습니다.루비의 메서드 클래스 메서드에 대한 의문

  1. nameoriginal_name의 차이점은 무엇입니까 : 나는 Method 클래스의 방법에 대한 몇 가지 의심이?
  2. source_loctionMethod에 해당하는 루비 보석에 nil을 부여 하시겠습니까?
  3. 나는 receiver이 메서드 개체의 바인딩 된 수신기를 제공하는 것을 보았습니다. 묶인 수신자의 의미는 무엇입니까?

def <method_name> ..... enddefine_method(symbol){block}으로 만든 방법을 구별 할 수 있습니까?

+2

강력하게 연결된 질문을 제외하고 스레드마다 하나의 질문을하십시오. – sawa

답변

0
  1. nameoriginal_name의 차이점은 무엇입니까?

    def foo; end 
    alias bar foo 
    
    method(:bar).name   #=> :bar 
    method(:bar).original_name #=> :foo 
    
  2. source_loctionMethod 객체 관련 루비 보석에 대한 nil을 제공합니다 :

    original_namealiased methods의 원래 이름을 반환? 너무 보석에 대한

    source_location 작품 : 나는 수신기가 결합 된 줄 것이라고 보았다

    method(:puts).source_location #=> nil 
    
  3. :

    require 'rails' 
    Rails.method(:version).source_location 
    #=> [".../ruby/2.1.1/gems/railties-4.1.0/lib/rails/version.rb", 5] 
    

    그것은 C로 작성 기본 방법, 즉 방법에 대한 nil 반환 메소드 객체의 수신기. 묶인 수신자의 의미는 무엇입니까?

    String.instance_method(:upcase) #=> #<UnboundMethod: String#upcase> 
    

    UnboundMethod 아무튼 '

    str = "abc" 
    str.method(:upcase) #=> #<Method: String#upcase> 
    

    instance_method가 언 바운드 방법으로서, 상기 방법을 반환

    바운드 방법은 예를 들어, 특정 목적 (수신)과 연관되고 호출 될 수있다 리시버가있어 호출 할 수 없습니다 (문자열 인스턴스가 없습니다).

  4. def <method_name> ..... enddefine_method(symbol){block}으로 만든 방법을 구별 할 수 있습니까?

    저는 그렇게 생각하지 않습니다.

관련 문제