我正在解码一个由另一个开发人员编写的用于购物车折扣的脚本,它包含了一些我以前没有见过的Ruby语法。在谷歌上搜索一下,我没有发现下面代码中使用“^”的原因,特别是在这些行中:
return @invert ^ ((@tags & customer_tags).length > 0)
return @invert ^ ((@tags & customer_tags).length > 0)
请参阅以下内容:
class CustomerTagQualifier < Qualifier
def initialize(match_type, match_condition, tags)
@match_condition = match_condition
@invert = match_type == :does_not
@tags = tags.map(&:downcase)
end
def match?(cart, selector = nil)
return true if cart.customer.nil? && @invert
return false if cart.customer.nil?
customer_tags = cart.customer.tags.to_a.map(&:downcase)
case @match_condition
when :match
return @invert ^ ((@tags & customer_tags).length > 0)
else
return @invert ^ partial_match(@match_condition, customer_tags, @tags)
end
end
end
有人有什么想法吗?谢谢你的意见
1条答案
按热度按时间ergxz8rk1#
这是一个布尔XOR运算符。https://en.wikipedia.org/wiki/Exclusive_or