必须有更好的方法来编写item.nil? ? nil : item.id.to_s
。有人知道吗?
答案 0 :(得分:4)
是的,有可能:
item && item.id.to_s
示例:
a = 23
a && a.to_s # => "23"
a = nil
a && a.to_s # => nil
答案 1 :(得分:2)
您还可以执行以下操作:
item.id.to_s if item
答案 2 :(得分:2)
我会使用unless
:
item.id.to_s unless item.nil?
我的情况是条件为假,此表达式的计算结果为nil
。
答案 3 :(得分:2)
由于你有“ruby-on-rails标签”,你可以在轨道上item.try(:id).try(:to_s)
这是一个例子
require 'active_support/core_ext/object/try'
class Item
attr_accessor :id
end
item= Item.new
item.id= 42
p item.try(:id).try(:to_s)
item= nil
p item.try(:id).try(:to_s)
“42”
零
答案 4 :(得分:-1)
编辑:目前还不是最好的方式,请参阅以下评论。
在下面的猴子补丁后,nil.id.to_s将开始返回nil。
class NilClass
def id
self
end
def to_s
self
end
end