直接传递方法名称或通过用户输入传递到 Ruby 中的方法有什么区别respond_to?

  • 本文关键字:方法 to Ruby respond 区别 用户 ruby
  • 更新时间 :
  • 英文 :


我写了以下代码:

obj = Object.new
def obj.talk
puts "Talk called"
end
if obj.respond_to?(talk)
obj.send(talk)
else
puts "No talk"
end

输出如下:

undefined local variable or method `talk' for main:Object (NameError)

但是当我通过用户输入传递它时,它的工作方式为:

obj = Object.new
def obj.talk
puts "Talk called"
end
request = gets.chomp
if obj.respond_to?(request)
obj.send(request)
else
puts "No talk"
end

从终端输入字符串talk时输出Talk called

谢谢@Amadan,它通过使用方法的符号名称来工作。以下作品。

obj = Object.new;
def obj.talk
puts "Talk called"
end
if obj.respond_to?(:talk)
obj.send(:talk)
else
puts "No talk"
end

谈话称为

相关内容

最新更新