2016-05-12 38 views
1

我可以代替這個分配值僅如果不是零

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調用兩次是昂貴的。目標是讓它成爲一個班輪。

+3

我沒有看到'load_le_other'被調用了兩次。 – AlexN

+0

我覺得好奇的是,有那麼多讀者解釋爲「load_le_other'調用兩次的代價很大」,這意味着OP的代碼會將該方法調用兩次,並且要避免。把它解釋爲意味着單線不應該將這種方法稱爲兩次是不是更有意義? –

回答

3

替換此:

le_one = load_le_other() || le_one 
+1

這就是OP明確表示要避免的原因。 – sawa

+0

@sawa很好,可能會等待lucas –

+0

這是一次只能調用'load_le_other()'的單線程。如果這不完全是問題,那麼這個問題需要編輯。 –

0

如果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