[英]when '=' can be used just after 'if' in Ruby/Rails?
在通過ActiveModel :: Serializable查找時,我注意到了這個方法
def as_json(args={})
if root = args[:root] || options[:root]
options[:hash] = hash = {}
options[:unique_values] = {}
hash.merge!(root => serialize)
include_meta hash
hash
else
serialize
end
end
而且我真的不知道'if root ='是如何工作的...不應該是'if root =='嗎?
這是有效的Ruby。 它將分配args[:root]
的值(如果不是nil),否則將分配options[:root]
的值。 然后,if語句將評估變量root
的值。 如果root
是true(不是nil
或false
),則if語句通過,否則它將執行else子句。
通常,通過執行以下操作可以使這一點更加清楚:
if (root = args[:root] || options[:root])
if root = args[:root] || options[:root]
如果args[:root]
不為nil
則會將args[:root]
的值分配給root
。 如果為nil
,則它將為root分配options[:root]
。 如果root
的最終結果不是nil
,則將采用if
的第一個分支。 如果為nil
,則將使用else
分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.