首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何重构两个循环以在Ruby中使用一种方法

如何重构两个循环以在Ruby中使用一种方法
EN

Stack Overflow用户
提问于 2017-05-23 16:53:14
回答 1查看 114关注 0票数 1

我有以下代码,并且希望循环只存在一次,但是返回语句对每个循环都不同:

代码语言:javascript
运行
复制
def valid?
  patterns.each do |pattern|
    match_data = text.match(pattern)
    if match_data
      return true
    end
  end
  false
end

def pattern_matched
  patterns.each do |pattern|
    match_data = text.match(pattern)
    if match_data
      return pattern.source
    end
  end
  nil
end

我不想存储任何状态的东西,因为我希望这些函数是纯净的,相互独立的。

如何编写一个运行循环但返回真/假或模式/零的助手函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-23 16:57:49

不如:

代码语言:javascript
运行
复制
def valid?
  !pattern_matched.nil?
end

def pattern_matched
  patterns.detect { |pattern| text.match(pattern) }&.source
end

我还替换了each循环,因为寻找第一个匹配元素detect似乎是一个更好的选择。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44140796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档