使用send方法和点方法之间的区别

时间:2014-05-22 23:27:04

标签: ruby

本书 The Well Grounded Rubyist 表明您可以使用send方法检查对象(ticket)是否响应用户输入:

if ticket.respond_to?(request) 
  puts ticket.send(request)
else
  puts "No such information available"
end  

上述代码和写作之间有什么区别:

if ticket.respond_to?(request) 
  puts ticket.request
else
  puts "No such information available"
end  

如果ticket响应用户输入,为什么不直接使用点表示法调用它?

1 个答案:

答案 0 :(得分:7)

ticket.request将消息request发送到ticket对象。

ticket.send(request)变量request 中包含的内容发送到ticket对象。因此,如果您在此之前编写了request = :clone,则该行等同于ticket.clone