Ruby 多个 OR 条件

标签 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

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

或者一个 regular expression :

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

noted by cremno 一样,^$ 匹配行的开头和结尾。如果 call_type 包含多行,您可以使用 \A\z

关于Ruby 多个 OR 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28690514/

相关文章:

java - 使用 OR 条件而不是 AND 条件连接列的注释

ruby-on-rails - #<Bundler::RubygemsIntegration:0x00005633f09a9000> 的未定义方法 `plain_specs'(NoMethodError)

html - 将自定义变量发送给部分 - 中间人

ruby-on-rails - 从 View 设置标题状态

ruby-on-rails - YouTube API v3 为所有 channel 返回 0 个订阅者

ruby - 如何在 Rails 5 中使用来自设计邮件程序的辅助方法?

filter - Maximo ListView : Filter where field is null OR equals value?

mysql - 在 LEFT JOIN 中使用 OR 条件