Ruby 多个 OR 条件
Ruby multiple OR conditions
在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 中有更好的表达方式吗?
提前致谢。
您可以使用 Array#include?
:
if %w(GPRS SMS MMS USSD TELEPHONY).include? call_type
# ...
end
或者 case
expression:
case call_type
when 'GPRS', 'SMS', 'MMS', 'USSD', 'TELEPHONY'
# ...
end
if call_type =~ /^(GPRS|SMS|MMS|USSD|TELEPHONY)$/
# ...
end
与、^
和$
匹配行的开头和结尾。如果 call_type
包含多行,您可以使用 \A
和 \z
。
在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 中有更好的表达方式吗?
提前致谢。
您可以使用 Array#include?
:
if %w(GPRS SMS MMS USSD TELEPHONY).include? call_type
# ...
end
或者 case
expression:
case call_type
when 'GPRS', 'SMS', 'MMS', 'USSD', 'TELEPHONY'
# ...
end
if call_type =~ /^(GPRS|SMS|MMS|USSD|TELEPHONY)$/
# ...
end
与^
和$
匹配行的开头和结尾。如果 call_type
包含多行,您可以使用 \A
和 \z
。