有没有更好的方式来写这个:
if myarray.include? 'val1' ||
myarray.include? 'val2' ||
myarray.include? 'val3' ||
myarray.include? 'val4'发布于 2011-11-06 18:10:24
使用设置交点(Array#:&):
(myarray & ["val1", "val2", "val3", "val4"]).present?您还可以循环(any?将在第一次出现时停止):
myarray.any? { |x| ["val1", "val2", "val3", "val4"].include?(x) }这对于小数组来说是可以的,在一般情况下,你最好有O(1)个谓词:
values = ["val1", "val2", "val3", "val4"].to_set
myarray.any? { |x| values.include?(x) }在Ruby >= 2.1中,使用Set#intersect
myarray.to_set.intersect?(values.to_set)发布于 2018-08-27 21:09:12
创建您自己的可重用方法:
class String
def include_any?(array)
array.any? {|i| self.include? i}
end
end用法
"a string with many words".include_any?(["a", "string"])https://stackoverflow.com/questions/8026300
复制相似问题