Groovy的:
如果有my_object - >访问'name'并大写
my_object?.name?.capitalize()
Run Code Online (Sandbox Code Playgroud)
ruby的等价物是什么,以避免nil对象使用此工具访问属性?
谢谢
这适用于Rails:
my_object.try(:name).try(:capitalize)
Run Code Online (Sandbox Code Playgroud)
如果你想让它在Ruby中工作,你必须Object像这样扩展:
class Object
##
# @person ? @person.name : nil
# vs
# @person.try(:name)
def try(method)
send method if respond_to? method
end
end
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |