我试图让==操作符匹配两个可能的值,如下所示。
def demo(x)
puts "foo!" if x == (5 || 7)
end
demo(5)
#=> "foo!"
demo(7)
#=> nil所以这不起作用,但是有没有办法匹配ruby中==操作符末尾的多个值呢?我想我以前见过,所以我试过,但我不确定。
发布于 2013-11-08 16:49:23
如下所示:
def demo(x)
puts "foo!" if x == 5 || x == 7
endx == (5 || 7)不能工作,因为5 || 7是5,所以它与x == 5相同。
发布于 2013-11-08 16:49:05
这里有一些选择
... if x == 5 || x == 7
... if [5, 7].include?(x)
... if x.in?(5, 7) # if in rails发布于 2013-11-08 17:00:38
回答你的问题:不,不可能:http://phrogz.net/programmingruby/language.html
比较算子 Ruby语法定义了比较运算符==,===,<=>,<,<=,>,>=,=~,以及标准方法eql?和平等吗?(见表7.1)。所有这些操作符都是作为方法实现的。虽然具有直观的意义,但要由实现它们的类来产生有意义的比较语义。库引用描述内置类的比较语义。该模块提供了对实现操作符==、<、<=、>、>=和方法的支持?就<=>而言。在case表达式中使用操作符===,在“Case表达式”一节中对其进行了描述。
所以这是一个只有一个参数的方法。除非,x是false,否则(x||y)总是返回x。
https://stackoverflow.com/questions/19864316
复制相似问题