2012-09-05 39 views
1

我有這個簡單的問題,但我找不到正確的答案。 我想知道我怎麼會做這樣的事情:紅寶石「 - 」到 - 或「+」到+

direction="-" 
    value=17 
    movement = direction value 

,這樣它會給我:運動= -17 我知道,如果我聲明可以使用一個,但我wordering如果有一個更快方式轉換 「 - 」 簡單 -

+2

'方向'必須是一個字符串嗎?你可以使用'-1'並將其與'value'相乘。 – waldrumpus

+0

directio的可能值是什麼?永遠是一元嗎? – tokland

+0

我認爲讓'direction'爲+1或-1更有意義,這樣您可以像@waldrumpus指出的那樣將它與值相乘。 –

回答

1

一個解決方案,從我身邊

direction = "-" 
value = 17 
movement = (direction + value.to_s).to_i 

這是非常基本的,沒有使用任何複雜的東西,這可能會使它有點不清潔,但至少證明只要瞭解ruby中的基本操作就可以解決許多任務。

0

沒有 '如果' 這個解決方案:

movement = (direction == "-") ? -value : value 
+0

ehem,'?'是'if'。 – tokland

+0

這是一種tongue舌,我的解決方案中沒有任何litteral。 – SirDarius

+0

好的:-)這裏有一些填充 – tokland

1

只需設置方向爲-1或+1,所以你可以用這個值乘以:

direction = -1 
value = 17 
movement = direction * value 

結果將是-17。

如果將方向設置爲1,則結果將爲17.因此,可以使用兩個方向,具體取決於方向值。

1

可以使用send

movement = 0.send(direction.to_sym, value) 
1

一元運算符在內部使用的後@,所以:

direction = "-" 
value = 17 
movement = value.send(direction + "@") 
#=> -17 

這就是說,IMO這是不必要的旋繞並(使用?)將一個簡單的條件表達式會更好。

+0

我可能會使用'value.send(「#{direction} @」)。 –