Как писал Илья Конюхов, при вызове method.is_a?(Object)
проверяется возвращаемое значение при вызове method
, которое будет "does something"
и nil
соответственно - оба значения равны Object
с.
Методы Rubys не являются объектами как таковыми , но вы можете получить представление объектов из них, используя метод Object#method
.
Забавная часть вашего конкретного примера состоит в том, что вы, к сожалению, назвали свой метод тестирования «метод», перезаписав таким образом ваш метод self
s method
.
Взгляните на этот пример, где я назвалвместо этого мой метод "test":
def test; end
test.class.name => "NilClass"
method(:test).class.name => "Method"
Как видите, test
- это , вызывающий метод и все после (например, is_a?
или class.name
) вызывается на возвращаемое значение .
method(:test)
, однако, возвращает представление объекта (класса Method
) самого метода.