我实际上有这个简单的问题,但我找不到正确的答案。我想知道我怎么能做这样的事情:
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
也就是说,IMO 这是不必要的复杂,一个简单的条件表达式(使用?
)会更好。
我这边的一个解决方案
direction = "-"
value = 17
movement = (direction + value.to_s).to_i
它非常基本,没有使用任何复杂的东西,这可能会使它有点不干净,但至少表明只要知道 ruby 中非常基本的操作就可以解决许多任务。
只需将方向设置为 -1 或 +1,即可乘以该值:
direction = -1
value = 17
movement = direction * value
结果将是-17。
如果将方向设置为 1,则结果将为 17。因此,您可以使用两个方向,具体取决于您的方向值。
此解决方案中没有“如果”:
movement = (direction == "-") ? -value : value