解决方法
这在Rails中有效:
my_object.try(:name).try(:capitalize)
如果你希望它在Ruby中工作,你必须像这样扩展Object:
class Object ## # @person ? @person.name : nil # vs # @person.try(:name) def try(method) send method if respond_to? method end end
在Rails年,它的实现如下:
class Object def try(*a,&b) if a.empty? && block_given? yield self else __send__(*a,&b) end end end class NilClass def try(*args) nil end end
原文地址:https://www.jb51.cc/ruby/266175.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。