0

我正在尝试想一种方法来作为一个过程来做到这一点。本质上,代码中唯一不同的部分是子字符串匹配它们是 .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
4

2 回答 2

1

我不确定我是否记得如何优雅地用 Ruby 编写代码,但是像这样的东西呢?

def check­_match(lea­d_attribut­e, track­er_attribu­te)­
    track­er_attribu­te.nil? or yield lead_­attribute,­ track­er_attribu­te
end

然后可以像这样调用该函数:

check_match("abcd", "bd") { |l, t| l.downcase == t.downcase }
check_match(la, ta) { |l, t| l.downcase.include? t.downcase }
于 2013-08-15T13:54:05.447 回答
0

来自@busy_wait 的修改。

def check­_match(lea­d_attribur­e, track­er_attribu­te, &condition)­
  track­er_attribu­te.nil? or condition.­call(lead_­attribute,­ track­er_attribu­te)
end

def check_exact_match(lead_attribute, tracker_attribute)
  check_match(lea­d_attribur­e, track­er_attribu­te) { |l, t| l.downcase == t.downcase }
end

def check_substring_match(lead_attribute, tracker_attribute)
  check_match(lea­d_attribur­e, track­er_attribu­te) { |l, t| l.downcase.include? t.downcase }
end
于 2013-08-16T09:21:07.113 回答