Ruby if / assign语句?

问题描述 投票:0回答:1

我已经运行了以下代码,我不知道它是做什么的。为什么他们使用=来比较值,还是他们分配值并在分配后检查值是否为真?

     if value = (key rescue nil)
       ..
     end
ruby
1个回答
3
投票

这相当于:

value = key rescue nil

if value
  ..  
end

要么

value = begin
  key
rescue
  nil
end

if value
  ..  
end

记住nilfalse是红宝石中falsey的唯一两个对象,因为value在这里可能是nil,如果声明可以返回false

© www.soinside.com 2019 - 2024. All rights reserved.