Ruby多个OR条件

Rak*_*Jha 1 ruby or-condition

在ruby中,是否有更简洁的方式在if语句中表达多个OR条件?

例如,这是我的代码:

if call_type == "GPRS" || call_type == "SMS" || call_type == "MMS" || call_type == "USSD" || call_type == "TELEPHONY"
  #do something
end
Run Code Online (Sandbox Code Playgroud)

会有更多OR条件,我不想多次这样写.有没有更好的方法在ruby 2.1.0中表达这一点?

提前致谢.

Ste*_*fan 9

你可以使用Array#include?:

if %w(GPRS SMS MMS USSD TELEPHONY).include? call_type
  # ...
end
Run Code Online (Sandbox Code Playgroud)

case表达式:

case call_type
when 'GPRS', 'SMS', 'MMS', 'USSD', 'TELEPHONY'
  # ...
end
Run Code Online (Sandbox Code Playgroud)

正则表达式:

if call_type =~ /^(GPRS|SMS|MMS|USSD|TELEPHONY)$/
  # ...
end
Run Code Online (Sandbox Code Playgroud)

cremno所述,^$匹配开头和结尾.您可以使用\A\z不是call_type包含多行.