2012-10-15 73 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聲明雖然