2011-08-06 50 views
0

我想要做這樣的事情,其中​​根據某些條件決定是否將val設置爲另一個或增加它。我覺得我在這裏錯過了一些明顯的東西,但是我會如何做這項工作?你能動態決定使用哪個操作符?

process_wager(@wagers[@street.current][@action.abbrev]) 
process_wager(@wagers[@street.current][:total]) 
process_wager(@actions[@action.abbrev]) 
process_wager(@wagered) 

def process_wager val 
    @condition ? val = @amt : val += @amt 
end 

我知道我可以做

@wagers[@street.current][@action.abbrev] = process_wager(@wagers[@street.current][@action.abbrev]) 

,但我希望能像上述高達一個整潔的方式。

+0

'val'是在'process_wager'方法及其分配新建分配FY不會做任何事情的局部變量。它不會更改傳遞給方法的對象。 –

回答

2

爲什麼不:

val = @condition ? @amt : val + @amt 
+0

我不會udnerstand那行代碼。你的意思是val == @condition? @condition只是一個布爾值,所以沒有任何意義,我不明白val = boolean是做什麼的。 –

+0

不,根據「@ condition」的真值,它會將'@ amt'或'val + @ amt'賦值給'val'。作業具有較低的優先級,因此它最後發生。 – kindall

+0

啊太神奇了,謝謝..不知道可以做到。 –