本书 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
响应用户输入,为什么不直接使用点表示法调用它?
答案 0 :(得分:7)
ticket.request
将消息request
发送到ticket
对象。
ticket.send(request)
将变量request
中包含的内容发送到ticket
对象。因此,如果您在此之前编写了request = :clone
,则该行等同于ticket.clone
。