stanza_class.new(node.attributes if node.attributes)
我傳遞一個變量,可能是一個方法中的零。 有沒有一種在ruby中做這件事的美麗方式?Ruby通過屬性,可能是零
stanza_class.new(node.attributes if node.attributes)
我傳遞一個變量,可能是一個方法中的零。 有沒有一種在ruby中做這件事的美麗方式?Ruby通過屬性,可能是零
如果您在使用Ruby on Rails,你可以使用try方法:
EG。
node.try(:attributes)
這意味着,如果node
是nil
,它返回的nil
而不是在NilClass缺少方法。
參考:http://api.rubyonrails.org/classes/Object.html#method-i-try
如果你不使用的軌道,就可以猴子自己修補Object類。並(在參考URL),選擇猴子修補Rails的源代碼是:
class Object
def try(*a, &b)
if a.empty? && block_given?
yield self
else
__send__(*a, &b)
end
end
end
如果你的意思是節點從來都不是零,但node.attributes可能是零,那麼你可以這樣做:
stanza_class.new(node.attributes)
這是因爲
stanza_class.new(nil)
相當於
stanza_class.new()
也就是說,未通過的參數默認設置爲零。
我假設它是node
其中可能是nil
。這是非常地道:
stanza_class.new(node.attributes if node)
雖然程序員用來Ick的可能會寫:
stanza_class.new(node.maybe.attributes)
stanza_class.new(*node.attributes)
'node.attributes如果node.attributes'是沒有意義的。 'node'可能是零嗎?然後'node.attributes if node' – tokland