2016-05-12 11 views
1

Ich kann diese ersetzen:Assign Wert nur, wenn nicht gleich Null

le_one = load_le_other() unless le_one 

mit diesem:

le_one ||= load_le_other() 

Wie kann ich diese ersetzen:

le_other = load_le_other() 
le_one = le_other if le_other 

mit etwas anderes als dies:

le_other = load_le_other() 
le_one = le_other || le_one 

load_le_other ist es teuer, zweimal anzurufen. Ziel ist es, einen Liner zu machen.

+3

Ich sehe nicht, wo 'load_le_other' zweimal aufgerufen wird. – AlexN

+0

Ich finde es merkwürdig, dass so viele Leser "' load_le_other' nennen, ist es teuer, zweimal zu rufen ", dass der OP-Code diese Methode zweimal nannte und das sollte vermieden werden. Ist es nicht sinnvoller, sie so zu interpretieren, dass der One-Liner diese Methode nicht zweimal aufrufen sollte? –

Antwort

3

mit diesem ersetzen:

le_one = load_le_other() || le_one 
+1

Das hat das OP ausdrücklich behauptet, dass sie es vermeiden wollen. – sawa

+0

@sawa gut, kann sein, wird warten Lucas –

+0

Es ist ein One-Liner, der 'load_le_other()' nur einmal aufruft. Wenn das nicht genau das ist, was gefragt wird, dann muss die Frage bearbeitet werden. –

0

Wenn load_le_other() nicht false zurückkehren können,

le_one = le_other = load_le_other() 

Beachten Sie, dass

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