&&=
在以下方法中的含义是什么?
records.each do |record|
raise_on_type_mismatch!(record)
add_to_target(record) do |rec|
result &&= insert_record(rec, true, should_raise) unless owner.
new_record?
end
end
答案 0 :(得分:7)
a &&= b
是一种简短形式(又名语法糖):
a && a = b
此简短表格适用于运营商(包括但不限于)+
,-
,/
,*
,%
,{{ 1}},**
,^
,<<
,>>
,&
,|
,&&
(@Stefan的积分有关supported operators shortcuts)的完整列表:
||
a = 5
a += 5
#⇒ 10
a = true
a &&= true
#⇒ true
a &&= false
#⇒ false
是一个逻辑又名“conjunction”而不是&&
逻辑或又名“{{} 3}}“。
答案 1 :(得分:3)
这意味着如果result
的先前值为false
或nil
,则保留并跳过insert_record
次调用,否则设置result
的值} {返回值insert_record
。