如何在单个对象中封装许多Ruby案例条件?

And*_*rew 3 ruby

我希望简化在多个条件适用时执行单个操作的代码.这是一个简化的例子:

case button
when 'up', 'upper-right', 'right', 'lower-right', 'down', 'lower-left', 'left', 'upper-left' 
  move_direction(button)
else
  do_something_else
end
Run Code Online (Sandbox Code Playgroud)

如果我可以将这些选项封装成类或常量之类的东西,那将会有所帮助,但我不确定如何做到这一点,或者它是否可能.我怎样才能封装这些条件?

Chr*_*ald 7

你可以使用数组splat.

VALID_DIRECTION = %w( upper-left up upper-right left right
  lower-right down lower-left )

case button
when *VALID_DIRECTION
  move_direction(button)
else
  do_something_else
end
Run Code Online (Sandbox Code Playgroud)