Dart Flutter Uint8List

Dart Flutter Uint8List

为什么在 Uint8List 的实例上调用 .reversed 而不是 return Uint8List 的字节顺序相反的实例。是否有一些合乎逻辑的原因不 return 以相反的字节顺序使用 Uint8List?

Uint8List uint8List = Uint8List(20); //20 byte array

Uint8List reversed =  uint8List.reversed; //error not returning Uint8List

你必须使用这个:

uint8List.reversed.toList()

作为reversedreturns和Iterable

因为 reversed 属性 是从 Uint8List 的超类 List 继承的(技术上是 Iterable,即 List的超类)。

由于 reversedIterable 的一部分,它 returns 是 Iterable 而不是 Uint8List。当然,您可以将其简单地转换为列表。

Uint8List reverseUint8List(Uint8List list) {
  return Uint8List.fromList(list.reversed.toList());
}

长话短说,这是为了避免为每个 Iterable 的实现重复 99% 的 reversed 代码,虽然它对输出没有意义(反向列表不能突然变成了 queue/set/whatever),这在实现上确实有意义,因为这些数据类型在这方面都很相似。