Ruby 可枚举函数的三重等于版本

Ruby 可枚举函数的三重等于版本,ruby,Ruby,Ruby三元组equals==在某些情况下很好,但在标准函数库中使用有限,尤其是在可枚举函数上。有没有常见的习惯用法可以实现诸如triple equals成员之类的功能?函数,而不必编写自定义函数或包含一些可能实现此类函数的gem 我所知道的唯一类似的函数是grep,它类似于三重相等的专用select 我这样问是因为,在使用可枚举函数的case语句中可以做一些事情,比如写: [/this/, /that/].member? "what" 或 你可以做: case "what"; when /t

Ruby三元组equals
==
在某些情况下很好,但在标准函数库中使用有限,尤其是在可枚举函数上。有没有常见的习惯用法可以实现诸如triple equals
成员之类的功能?
函数,而不必编写自定义函数或包含一些可能实现此类函数的gem

我所知道的唯一类似的函数是
grep
,它类似于三重相等的专用
select

我这样问是因为,在使用可枚举函数的case语句中可以做一些事情,比如写:

[/this/, /that/].member? "what"

你可以做:

case "what"; when /this/, /that/
  ...
end

case some_object; when MyClass, MyOtherClass
  ...
end
从我的-

根据您的需求,我可以建议您一种满足需求的方法,您正在寻找:

[MyClass, MyOtherClass] & some_object.class.ancestors

虽然它仍然是一个wrokaround使用。

您是否正在尝试检查
某个\u对象
是否是数组中哪个类的对象?您可以执行
[MyClass,MyTherClass]。有吗?{| klass | klass===some_object}
还有..可能是你要找的@GGordonWorleyIII的副本,我找到了。但据我所知,没有这样一个直接的方法来解决你的问题。我的意思是说,你在寻找什么,完全相同的方法,不可用。但是,当您使用
检测时,我会告诉您,使用
[MyClass,MyOtherClass]&一些_object.class.祖先
。:)仍然是一个解决办法:-)@ArupRakshit这很聪明+11
[MyClass, MyOtherClass] & some_object.class.ancestors