PowerQuery中如何实现两个布尔值的异或(XOR)运算?
在PowerQuery M中用基础逻辑运算符实现异或(XOR)
异或的核心逻辑是:两个布尔值相异时结果为true,相同时为false。由于PowerQuery M仅支持or、and、not三种基础逻辑运算符,我们可以通过以下两种组合方式实现异或:
方法一:排除同真场景
先通过or获取至少一个为真的情况,再用not和and排除两者同时为真的场景,最终得到异或结果:
// 定义异或函数 let XOR = (a as logical, b as logical) as logical => (a or b) and not (a and b) in XOR
方法二:枚举异或为真的场景
直接枚举异或结果为true的两种情况(a假b真、a真b假),用or合并这两种场景:
// 定义异或函数 let XOR = (a as logical, b as logical) as logical => (not a and b) or (a and not b) in XOR
以上两种写法都能完全实现标准的异或逻辑,可根据个人习惯选择使用。
内容的提问来源于stack exchange,提问作者P. Hopkinson
相关产品推荐
相关产品推荐

