3

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

例如,这是我的代码:

if call_type == "GPRS" || call_type == "SMS" || call_type == "MMS" || call_type == "USSD" || call_type == "TELEPHONY"
  #do something
end

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

提前致谢。

4

1 回答 1

12

你可以使用Array#include?

if %w(GPRS SMS MMS USSD TELEPHONY).include? call_type
  # ...
end

case表达式

case call_type
when 'GPRS', 'SMS', 'MMS', 'USSD', 'TELEPHONY'
  # ...
end

正则表达式

if call_type =~ /^(GPRS|SMS|MMS|USSD|TELEPHONY)$/
  # ...
end

cremno 所述,匹配行首^$行尾。如果包含多行,您可以使用\Aand\z代替。call_type

于 2015-02-24T07:47:01.010 回答