Triple等于Enumerable函数的版本

时间:2014-05-22 17:28:30

标签: ruby

Ruby三元组等于===在某些情况下很不错,但它在标准函数库中的使用受到限制,尤其是在Enumerables上。是否存在实现三等于member?函数之类的常用习惯用法而无需编写自定义函数或包含可能实现此类函数的某些gem?

我唯一知道的功能是grep,就像三等号的专用select一样。

我问,因为在使用Enumerable函数的case语句中做你可能会做的事情很好,比如写:

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

[MyClass, MyOtherClass].member? some_object

2 个答案:

答案 0 :(得分:2)

来自我的comment -

根据您的需要,我建议您找到满足您需求的方法:

[MyClass, MyOtherClass] & some_object.class.ancestors

尽管使用Array Intersection仍然是一个不可思议的事。

答案 1 :(得分:0)

你可以这样做:

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

case some_object; when MyClass, MyOtherClass
  ...
end