0

有没有办法将代码块作为红宝石 if 条件传递?

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

这是我认为应该如何编写的示例片段:

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

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

4

1 回答 1

2

使用Enumerable#any?. 请参阅参考文档:http ://ruby-doc.org/core-2.0/Enumerable.html 。此方法(以及Enumerable#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
于 2013-08-01T16:07:07.137 回答