我有以下代码,并且希望循环只存在一次,但是返回语句对每个循环都不同:
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我不想存储任何状态的东西,因为我希望这些函数是纯净的,相互独立的。
如何编写一个运行循环但返回真/假或模式/零的助手函数?
发布于 2017-05-23 16:57:49
不如:
def valid?
!pattern_matched.nil?
end
def pattern_matched
patterns.detect { |pattern| text.match(pattern) }&.source
end我还替换了each循环,因为寻找第一个匹配元素detect似乎是一个更好的选择。
https://stackoverflow.com/questions/44140796
复制相似问题