반응형
현재 실행 중인 메서드의 이름을 가져옵니다.
$0
최상위 Ruby 프로그램의 변수인데, 현재 방법에 변수가 있습니까?
당신이 사용할 수 있는 나의 첫 번째 대답보다 훨씬 더 좋습니다.__method__
:
class Foo
def test_method
__method__
end
end
예를 들어 다음과 같은 기호를 반환합니다.:test_method
메서드 이름을 문자열로 반환하려면 다음을 호출합니다.__method__.to_s
대신.
참고: 이를 위해서는 Ruby 1.8.7이 필요합니다.
실제로 원하는 항목에 따라 다음 중 하나를 사용할 수 있습니다.__method__
또는__callee__
현재 실행 중인 메서드의 이름을 기호로 반환합니다.
루비 1.9에서는 두 가지 모두 동일하게 동작합니다(문서와 제 테스트에 관한 한).
루비 2.1 & 2.2에서__callee__
정의된 메서드의 별칭을 호출하면 다르게 동작합니다.두 개의 문서는 서로 다릅니다.
__method__
"현재 방법의 정의에 있는 이름"(즉, 정의된 이름)__callee__
"현재 메서드의 호출된 이름"(즉, 호출된 이름()
테스트 스크립트:
require 'pp'
puts RUBY_VERSION
class Foo
def orig
{callee: __callee__, method: __method__}
end
alias_method :myalias, :orig
end
pp( {call_orig: Foo.new.orig, call_alias: Foo.new.myalias} )
1.9.3 출력:
1.9.3
{:call_orig=>{:callee=>:orig, :method=>:orig},
:call_alias=>{:callee=>:orig, :method=>:orig}}
2.1.2 출력(__callee__
별칭 이름을 반환하지만__method__
메서드가 정의된 지점의 이름을 반환합니다.):
2.1.2
{:call_orig=>{:callee=>:orig, :method=>:orig},
:call_alias=>{:callee=>:myalias, :method=>:orig}}
http://snippets.dzone.com/posts/show/2785 에서:
module Kernel
private
def this_method_name
caller[0] =~ /`([^']*)'/ and $1
end
end
class Foo
def test_method
this_method_name
end
end
puts Foo.new.test_method # => test_method
Ruby 1.9+의 경우 다음을 사용하는 것이 좋습니다.__callee__
뷰 파일에서 메서드 이름을 검색하는 데 동일한 문제가 발생했습니다.제가 해결책을 구했습니다.
params[:action] # it will return method's name
컨트롤러의 이름을 알고 싶다면,
params[:controller] # it will return you controller's name
언급URL : https://stackoverflow.com/questions/199527/get-the-name-of-the-currently-executing-method
반응형
'programing' 카테고리의 다른 글
아이폰 사진 라이브러리에 사진을 저장하는 방법은 무엇입니까? (0) | 2023.05.31 |
---|---|
layoutSubviews는 언제 호출됩니까? (0) | 2023.05.31 |
여러 파일을 통해 더 큰 프로젝트에 Sinatra 사용 (0) | 2023.05.31 |
Ruby에서 임의 문자열을 생성하는 방법 (0) | 2023.05.31 |
Android에서 내 응용 프로그램의 메시지만 가져오려면 LogCat을 필터링하시겠습니까? (0) | 2023.05.31 |