Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby if语句中的2个条件_Ruby - Fatal编程技术网

Ruby if语句中的2个条件

Ruby if语句中的2个条件,ruby,Ruby,我试图检测电子邮件地址是否不是两个域中的一个,但我在ruby语法方面遇到了一些问题。我目前有: if ( !email_address.end_with?("@domain1.com") or !email_address.end_with?("@domain2.com")) #Do Something end 这是条件的正确语法吗?而不是这里的或,您需要一个逻辑&&(and),因为您试图查找两个字符串都不匹配的字符串 通过使用或,如果任一条件为真,则整个条件仍将为假 请注意,我使用的是&

我试图检测电子邮件地址是否不是两个域中的一个,但我在ruby语法方面遇到了一些问题。我目前有:

if ( !email_address.end_with?("@domain1.com") or !email_address.end_with?("@domain2.com"))
  #Do Something
end

这是条件的正确语法吗?

而不是这里的
,您需要一个逻辑
&&
(and),因为您试图查找两个字符串都不匹配的字符串

通过使用
,如果任一条件为真,则整个条件仍将为假

请注意,我使用的是
&&
而不是
,因为它具有更高的优先级。详情如下

从评论中: 可以使用
构建等效条件,除非使用逻辑or
|

unless email_address.end_with?("@domain1.com") || email_address.end_with?("@domain2.com")
这可能更容易阅读,因为
|
的两边不必用
求反

如何:

(!email_address[/@domain[12]\.com\z/])

如果添加了更多的域,那么重复的
电子邮件地址。以?
结尾会变得很无聊。备选方案:

if ["@domain1.com", "@domain2.com"].none?{|domain| email_address.end_with?(domain)}
  #do something
end

我忘了
end\u with?
接受多个参数:

unless email_address.end_with?("@domain1.com", "@domain2.com")
 #do something
end

看起来不错,不过不需要外括号。你能发布一些关于你的问题的更多信息吗?或者,相当于:除非上面添加了email_address.end_with?(“@domain1.com”)| email_address.end_with?(“@domain2.com”)@LucasMarcondesPavelski。我倾向于使用逻辑AND而不是OR的
除非
,但这里避免否定很好。呵呵,我刚想发布类似的东西,除了我的版本是
除非
<代码>任何?
表格+1.如果我需要更新更多的域,我会记住这一点。
unless email_address.end_with?("@domain1.com", "@domain2.com")
 #do something
end