簡體   English   中英

什么時候可以在Ruby / Rails中的“ if”之后使用“ =”?

[英]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(不是nilfalse ),則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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM