【发布时间】:2014-05-22 17:28:30
【问题描述】:
Ruby 三元组等于=== 在某些情况下很好用,但它在标准函数库中的使用有限,尤其是在 Enumerables 上。是否有常见的习惯用法可以实现三重等于 member? 函数,而无需编写自定义函数或包含一些可以实现此类函数的 gem?
我知道的唯一这样的函数是grep,它就像一个专门用于三等号的select。
我之所以这么问,是因为在使用 Enumerable 函数的 case 语句中做一些你可能会做的事情会很好,比如写作:
[/this/, /that/].member? "what"
或
[MyClass, MyOtherClass].member? some_object
【问题讨论】:
-
您是否要检查
some_object是否是数组中哪些类的对象? -
你也可以
[MyClass, MyOtherClass].any? { |klass| klass === some_object }.. -
@GGordonWorleyIII 你要找的,我知道了。但据我所知,没有这样直接的方法可以解决你的问题。我的意思是说,你在找什么,完全相同的方法,不可用。但是当您使用
detect时,我会告诉您,使用[MyClass, MyOtherClass] & some_object.class.ancestors.. :) 仍然是一种解决方法:-) -
@ArupRakshit 非常聪明。 +11
标签: ruby