実際にこの簡単な質問がありますが、正しい答えが見つかりません。どうすればこのようなことができるか知りたいです:
direction="-"
value=17
movement = direction value
それが私に与えるように:motion = -17 ifステートメントを使用できることは知っていますが、「-」を単純に変換するためのより迅速な方法があるかどうかを言葉で表現していました-
実際にこの簡単な質問がありますが、正しい答えが見つかりません。どうすればこのようなことができるか知りたいです:
direction="-"
value=17
movement = direction value
それが私に与えるように:motion = -17 ifステートメントを使用できることは知っていますが、「-」を単純に変換するためのより迅速な方法があるかどうかを言葉で表現していました-
使用できますsend
movement = 0.send(direction.to_sym, value)
単項演算子は内部的に末尾@
を使用するため、次のようになります。
direction = "-"
value = 17
movement = value.send(direction + "@")
#=> -17
そうは言っても、これは不必要に複雑であり、単純な条件式 ( を使用?
) の方が良いでしょう。
私の側からの1つの解決策
direction = "-"
value = 17
movement = (direction + value.to_s).to_i
これは非常に基本的なものであり、複雑なものを使用していないため、少し汚れる可能性がありますが、少なくとも、rubyの非常に基本的な操作だけを知っていると、多くのタスクを解決できることを示しています。
方向を -1 または +1 に設定するだけで、この値で乗算できます。
direction = -1
value = 17
movement = direction * value
結果は -17 になります。
方向を 1 に設定すると、結果は 17 になります。したがって、方向の値に応じて、両方の方向を使用できます。
このソリューションには「if」はありません:
movement = (direction == "-") ? -value : value