在ruby的if语句中使用代码块

时间:2013-08-01 16:02:15

标签: ruby regex if-statement codeblocks

有没有办法将代码块作为ruby传递给条件?

我有一个正则表达式列表,我想检查一条消息是否与其中任何一个匹配,然后相应地做一些事情,或者做一些不同的事情。

以下是我认为应该如何编写的示例摘录:

msg_values.each do |msg|
    if (SKIP_MSG_ARRAY.each { |regular_exp| return true if msg.match(regular_exp)})
        # do something
    else
        # do something else
    end        
end

有可能吗?或者写这样的东西最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

使用Enumerable#any?。请参阅参考文档:http://ruby-doc.org/core-2.0/Enumerable.htmlEnumerable#all?)将返回true或false。

示例:

msg_values.each do |msg|
  if (SKIP_MSG_ARRAY.any? { |regular_exp| msg.match(regular_exp)})
    # do something
  else
    # do something else
  end
end