1

実際にこの簡単な質問がありますが、正しい答えが見つかりません。どうすればこのようなことができるか知りたいです:

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

それが私に与えるように:motion = -17 ifステートメントを使用できることは知っていますが、「-」を単純に変換するためのより迅速な方法があるかどうかを言葉で表現していました-

4

5 に答える 5

2

使用できますsend

movement = 0.send(direction.to_sym, value)
于 2012-09-05T08:16:00.243 に答える
2

単項演算子は内部的に末尾@を使用するため、次のようになります。

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

そうは言っても、これは不必要に複雑であり、単純な条件式 ( を使用?) の方が良いでしょう。

于 2012-09-05T09:13:04.907 に答える
1

私の側からの1つの解決策

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

これは非常に基本的なものであり、複雑なものを使用していないため、少し汚れる可能性がありますが、少なくとも、rubyの非常に基本的な操作だけを知っていると、多くのタスクを解決できることを示しています。

于 2012-09-05T08:11:26.237 に答える
1

方向を -1 または +1 に設定するだけで、この値で乗算できます。

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

結果は -17 になります。

方向を 1 に設定すると、結果は 17 になります。したがって、方向の値に応じて、両方の方向を使用できます。

于 2012-09-05T08:13:48.343 に答える
0

このソリューションには「if」はありません:

movement = (direction == "-") ? -value : value
于 2012-09-05T08:10:11.710 に答える