Ruby/Rails将数组传递给case

Hab*_*ble 17 ruby case-statement

这是场景:

case code
  when 'www', '', nil
    false
  when 'code1', 'code2'... 'code_n' # The array STORE_CODES contains all the codes 
    true
  else
    false
end
Run Code Online (Sandbox Code Playgroud)

我怎样才能STORE_CODES直接使用when而不是'code1', 'code2'... 'code_n'

Mun*_*sim 35

只需使用:

when *STORE_CODES
Run Code Online (Sandbox Code Playgroud)

代替 :

when 'code1', 'code2'... 'code_n'
Run Code Online (Sandbox Code Playgroud)

  • 对于那些好奇的人来说,`*`是一个splat运算符,其中(除其他外)将数组转换为逗号分隔的字符串.关于这方面的好消息:https://endofline.wordpress.com/2011/01/21/the-strange-ruby-splat/ (2认同)