[英]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.