2016-04-04 16 views
5

Co oznacza &&= w następującej metodzie?Gramatyka w języku Ruby "&& ="

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 

Odpowiedz

7

a &&= b jest krótka forma (cukier aka składniowym) dla:

a && a = b 

Ta krótka forma jest dla operatorów (w tym, lecz nie może ograniczać się do) +, -, /, *, % , **, ^, <<, >>, &, |, &&, || (kredyt s do @Stefan do pełnej listy supported operators shortcuts):

a = 5 
a += 5 
#⇒ 10 

a = true 
a &&= true 
#⇒ true 
a &&= false 
#⇒ false 

&& jest logiczne i aka „conjunction” w przeciwieństwie do || która logiczny lub aka „disjunction”.

+2

Nie jestem pewien, czy przykład kodu na końcu jest wystarczająco wyraźny. Czy możesz opisać prostymi słowami, co "&&" robi w przeciwieństwie do '||'? – Stefan

+0

@Stylko zrobione, thx. – mudasobwa

+1

Zarówno '&&' jak i '||' są operatorami logicznymi. Te binarne to 'i' oraz '|'. – Stefan

3

Oznacza to, Jeśli poprzednia wartość result to false lub nil, należy ją zachować i pominąć dalsze wywołania insert_record, w przeciwnym razie ustawić wartość result na wartość zwracaną insert_record.