Получите название в настоящее время метода выполнения

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
190
задан the Tin Man 10 March 2015 в 16:14
поделиться

2 ответа

Еще лучше, чем мой первый ответ можно использовать __ метод __:

class Foo
  def test_method
    __method__
  end
end

Это возвращает символ †“В, например, :test_method. Для возврата имени метода как строки звоните __method__.to_s вместо этого.

Примечание: Это требует Ruby 1.8.7.

315
ответ дан mplewis 23 November 2019 в 05:36
поделиться

От 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
24
ответ дан Mark A. Nicolosi 23 November 2019 в 05:36
поделиться