gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:51 25 4
gpt4 key购买 nike

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

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

我不想在状态中存储任何东西,因为我希望这些函数是纯粹的并且彼此独立。

如何编写运行循环但返回 true/false 或 pattern/nil 的辅助函数?

最佳答案

怎么样:

def valid?
!pattern_matched.nil?
end

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

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

关于ruby - 如何重构两个循环以在 Ruby 中使用一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44140796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com