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

也就是说,IMO 这是不必要的复杂,一个简单的条件表达式(使用?)会更好。

于 2012-09-05T09:13:04.907 回答
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

此解决方案中没有“如果”:

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