我可以替换这个:
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_one
和le_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()返回非零值时才执行抽头(及其块)。