跳到主內容

sdk_version_gt_gt_gt_operator

運算子 “>>>” 直到 2.14.0 版本才被支援,但此程式碼要求能夠在早期版本上執行。

描述

#

當代碼中使用運算子 >>> 且 SDK 約束的下限小於 2.14.0 時,分析器會產生此診斷。該運算子在早期版本中不受支援,因此此程式碼將無法在早期版本的 SDK 上執行。

示例

#

這是一個 pubspec 示例,它定義了一個 SDK 約束,其下限小於 2.14.0

yaml
environment:
 sdk: '>=2.0.0 <2.15.0'

在使用該 pubspec 的軟體包中,如下所示的程式碼會產生此診斷

dart
int x = 3 >>> 4;

常見修復方法

#

如果你不需要支援舊版本的 SDK,則可以提高 SDK 約束以允許使用該運算子

yaml
environment:
  sdk: '>=2.14.0 <2.15.0'

如果你需要支援舊版本的 SDK,則重寫程式碼以不使用 >>> 運算子

dart
int x = logicalShiftRight(3, 4);

int logicalShiftRight(int leftOperand, int rightOperand) {
  int divisor = 1 << rightOperand;
  if (divisor == 0) {
    return 0;
  }
  return leftOperand ~/ divisor;
}