我正试图想办法将此作为一个过程。基本上,代码中唯一不同的部分是在子字符串匹配上它们是一个.include?而不是检查等于。
def check_exact_match(lead_attribute, tracker_attribute)
return true if tracker_attribute.nil?
return true if lead_attribute.downcase == tracker_attribute.downcase
false
end
def check_substring_match(lead_attribute, tracker_attribute)
return true if tracker_attribute.nil?
return true if lead_attribute.downcase.include? tracker_attribute.downcase
return false
end
答案 0 :(得分:1)
我不确定我是否记得如何优雅地在Ruby中编码,但是这样的事情呢?
def check_match(lead_attribute, tracker_attribute)
tracker_attribute.nil? or yield lead_attribute, tracker_attribute
end
然后可以像这样调用该函数:
check_match("abcd", "bd") { |l, t| l.downcase == t.downcase }
check_match(la, ta) { |l, t| l.downcase.include? t.downcase }
答案 1 :(得分:0)
来自@busy_wait的修改。
def check_match(lead_attribure, tracker_attribute, &condition)
tracker_attribute.nil? or condition.call(lead_attribute, tracker_attribute)
end
def check_exact_match(lead_attribute, tracker_attribute)
check_match(lead_attribure, tracker_attribute) { |l, t| l.downcase == t.downcase }
end
def check_substring_match(lead_attribute, tracker_attribute)
check_match(lead_attribure, tracker_attribute) { |l, t| l.downcase.include? t.downcase }
end