仅当不为零时才赋值

  • 本文关键字:赋值 零时 ruby
  • 更新时间 :
  • 英文 :


我可以替换这个:

le_one = load_le_other() unless le_one

这个:

le_one ||= load_le_other()

如何更换:

le_other = load_le_other()
le_one = le_other if le_other

除了这个:

le_other = load_le_other()
le_one = le_other || le_one

load_le_other呼叫两次是昂贵的。我们的目标是使它成为一条直线。

替换为:

le_one = load_le_other() || le_one

如果load_le_other()不能返回false

le_one = le_other = load_le_other()

注意,如果

le_other = load_le_other()
  #=> nil
le_one = le_other if le_other
  # le_one = nil if nil
  #=> nil 

这将为le_onele_other:分配适当的值

le_one = (le_other = le_load_other()).nil? ? le_one : le_other

在定义le_one之前就可以将其分配给它本身,这是违反直觉的,但它是有效的。

如果你已经定义了le_one,你也可以这样做:

le_other = le_load_other()&.tap { |val| le_one = val }

&.仅在le_load_other()返回非零值时才执行抽头(及其块)。

最新更新