在 Dart 中使用三重移位 (>>>) 运算符

Using the triple-shift (>>>) operator in Dart

据说 Dart 2.14 包含三重移位运算符 (>>>),但是当我尝试使用它时出现错误:

print(0xff >>> 1);

编译器突出显示三个中的最后一个 > 并说:

Expected an identifier.

在我的本地计算机和 DartPad 中都是如此。两者都使用 Flutter 2.5 附带的 Dart 2.14 版本。

是我做错了什么还是版本有问题?

可以参考我的related answer here.


给定版本中引入的任何语言功能 都需要该版本作为项目的最低限制。这意味着您需要更新 pubspec.yaml:

environment:
  sdk: '>=2.14.0 <3.0.0'

现在,您可以使用:

var foo = 42;
foo >>> 2;

如果编译此代码,需要 Dart SDK 版本 2.14.1.

Dart language site’s documentation and examples use version 2.13.4 of the Dart SDK. https://dart.dev/tools/sdk.

所以当你尝试使用 Flutter 时,它使用的 SDK 版本低于 2.14.1

Download the latest Flutter SDK https://flutter.dev/docs/get-started/install/windows and replace the old one. Update your pubspec.yaml file

environment:
  sdk: ">=2.14.0 <3.0.0"

要运行你的没有 Flutter 应用程序的代码:

Download latest Dart SDK from https://dart.dev/tools/sdk/archive

  • 使用 Android Studio IDE 创建项目。

  • 创建一个新的 Flutter 项目。 Select Dart 来自左侧菜单。

  • 找到你下载的Dart SDK路径(必须解压)

  • 提供您的项目名称位置

  • 创建一个 Dart 文件并编写这些代码行。

      void main() {
        final value = 0x22;
        print("Current value : $value");
        print("Unsigned shift right value is : ${(value >>> 4)}");
      }
    

    输出是

      F:/Dart/dart-sdk/bin/dart.exe --enable-asserts F:\Flutter\TestDartLanguage\main.dart
      Current value : 34
      Unsigned shift right value is : 2
    
      Process finished with exit code 0
    

享受快乐的编码。谢谢