有没有办法将代码块作为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
有可能吗?或者写这样的东西最好的方法是什么?
答案 0 :(得分:2)
使用Enumerable#any?
。请参阅参考文档:http://ruby-doc.org/core-2.0/Enumerable.html。 1}}这个方法(以及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