이 설명이다 Kernel#__method__
according to Ruby-Doc.org (강조 추가)JRuby의 Kernel # __ method__ 구현이 손상 되었습니까?
기호로 현재 방법의 정의에 이름을 돌려 . 메서드 외부에서 호출되면
nil
을 반환합니다.
이제 다음 코드 조각을 고려
DEFINITION = proc { __method__ }
class C
define_method :one, DEFINITION
define_method :two, DEFINITION
end
o = C.new
언제 실행 + 내가 예상 한 결과지고있어 MRI의 v1.8.7을 사용하여 다음과 같은 : 그러나
o.one #=> :one
o.two #=> :two
내가 실행 JRuby 1.7 이상을 사용하는 동일한 코드 (이전 버전을 테스트하지 않았습니다) :
o.one #=> :two
o.two #=> :two
이것은 JRuby의 구현에서 결함으로 간주 될 수 있습니까 아니면 단순히 Kernel#__method__
의 다른 해석입니까?
'DEFINITION.call'을 실행할 때 두 문맥 모두에서 어떤 일이 발생하는지 확인하십시오. –
두 경우 모두 반환 값은': two '입니다. –
아마도 JRuby (호환성) 버그로보고하면됩니다 ... – kares