[英]What does this `^` operator mean in Dart?
这个^
运算符在 Dart 中是什么意思?
int get hashCode => cityName.hashCode ^ temperatureCelsius.hashCode;
在许多语言中,包括 Dart, ^
运算符代表按位异或运算。
从概念上讲,它的作用是将其两个操作数都转换为长度相等的位串,并将异或逻辑应用于每对位。
例子:
假设我们的输入是数字 7 和数字 14。这是它们的二进制(位串)表示:
7: 0111
14: 1110
在这种情况下,结果将是:
9: 1001
在您的示例中,这似乎用于从其他两个 hash 值创建 hash 。 这是组合两个 hash 值的“默认”方式,原因在这里解释:
^
运算符是用户定义的二元运算符。 class 可以将其定义为任何它想要的意思。 一些内置的 Dart 类有一个^
运算符,即int
和bool
。
对于bool
, ^
运算符是异或运算,当且仅当仅当一个操作数为真时结果为true
(而另一个为false
,因为它必须是bool
)。
对于int
, ^
运算符是按位异或运算。 integer 数字被解释为它们的二进制补码表示的位,并且同一 position 处的两个操作数的位是异或,因此当且仅当两个位中的一个恰好为 1 时,结果为 1。 :
var x = 27; // bits: ..0011011
var y = 37; // bits: ..0100101
var z = x ^ y; // bits: ..0111110 - aka 62
非平台类也可以实现运算符,例如在fixnum package 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.