2012-10-15 133 views
1
的阵列

可能重复:
In Ruby, how do I find out if a string is not in an array?红宝石匹配字符串为字符串

现在我有这样的代码:

partial_update = true if session[:intended_params][:controller] == 'foo' 
partial_update = true if session[:intended_params][:controller] == 'bar' 
partial_update = true if session[:intended_params][:controller] == 'ding' 
partial_update = true if session[:intended_params][:controller] == 'dong' 
partial_update = true if session[:intended_params][:controller] == 'up' 
partial_update = true if session[:intended_params][:controller] == 'down' 
partial_update = true if session[:intended_params][:controller] == 'bing' 
# ETC. 

我想改变这

array = %w[foo bar ding dong up down bing] 
partial_update = true if session[:intended_params][:controller] == array.any_of_the_possibilites 

有没有一个很好的方法来做到这一点?

回答

5

使用红宝石Array (Enumerable) include? method

array = %w[foo bar ding dong up down bing] 
partial_update = true if array.include?(session[:intended_params][:controller]) 
+0

不完全等同于OP什么期待,因为它会指定'FALSE'如果没有匹配(不是说原来的行为是的) –

+0

@VictorMoroz:啊,真的,我会稍微修改。 – maerics

1
case session[:intended_params][:controller] 
when *%w[foo bar ding dong up down bing] 
    partial_update = true 
end 

可能被滥用case声明虽然