新手问题 求两层循环之间跳转语句的简化

u4crella · 2020年05月11日 · 最后由 zhengpd 回复于 2020年05月12日 · 2540 次阅读

如果不用正则表达式,怎样才能简化下面的语句?

list1.each do |a| # a是文本
  list2.each do |b| # b也是文本
    # 这里是检查如果list2中某个字符串在a里面,则转到list1里对下一个a的处理
    if a.include?(b)
       # 如何在这里让list1进入下一个循环?
    end
  end
  # 后续操作..
end

# 以下是我现在的写法

test = lambda { |x|
  list2.each do |b|
     return true if x.include?(b)
  end
  return false
}
list1.each do |a|
  next if test.call(x)
  # 后续操作..
end
list1.each do |a|
  next if list2.any?{ |b| a.include?(b) }
  # 后续操作
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号