【发布时间】:2013-07-27 11:14:51
【问题描述】:
编辑:我使用的是 Ruby 2.0.0 版
我在文件 example.rb 中有以下代码
def say_hello
puts 'hi'
end
puts respond_to?(:say_hello)
say_hello
运行此代码时,输出为:
false
hi
我很困惑为什么“respond_to”返回 false?当我可以使用该方法时。
“respond_to?”方法似乎是这样工作的:
class Person
def say_bye
puts 'bye'
end
end
mike = Person.new
puts mike.respond_to?(:say_bye)
mike.say_bye
输出是:
true
bye
有人对为什么“respond_to”有任何见解吗?在第一种情况下返回 false?
【问题讨论】:
-
有趣,我只是在 irb 中运行它,它对我有用。您是否尝试过通过调用 self 来更明确?
puts self.respond_to?(:say_hello) -
self.respond_to(:say_hello) 返回 false。
-
你运行的是什么版本的 Ruby?
-
如果我定义如下: def self.say_hello;放“嗨”;结尾;把 response_to(:say_hello);那返回真。我一定对这些方法需要定义为类方法还是实例方法感到困惑。有趣的是,我的第一个示例为您返回 true……我使用的是 Ruby 2.0.0,这可能是为什么?
标签: ruby