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()
作为reversed
returns和Iterable
。
因为 reversed
属性 是从 Uint8List
的超类 List
继承的(技术上是 Iterable
,即 List
的超类)。
由于 reversed
是 Iterable
的一部分,它 returns 是 Iterable
而不是 Uint8List
。当然,您可以将其简单地转换为列表。
Uint8List reverseUint8List(Uint8List list) {
return Uint8List.fromList(list.reversed.toList());
}
长话短说,这是为了避免为每个 Iterable
的实现重复 99% 的 reversed
代码,虽然它对输出没有意义(反向列表不能突然变成了 queue/set/whatever),这在实现上确实有意义,因为这些数据类型在这方面都很相似。
为什么在 Uint8List 的实例上调用 .reversed 而不是 return Uint8List 的字节顺序相反的实例。是否有一些合乎逻辑的原因不 return 以相反的字节顺序使用 Uint8List?
Uint8List uint8List = Uint8List(20); //20 byte array
Uint8List reversed = uint8List.reversed; //error not returning Uint8List
你必须使用这个:
uint8List.reversed.toList()
作为reversed
returns和Iterable
。
因为 reversed
属性 是从 Uint8List
的超类 List
继承的(技术上是 Iterable
,即 List
的超类)。
由于 reversed
是 Iterable
的一部分,它 returns 是 Iterable
而不是 Uint8List
。当然,您可以将其简单地转换为列表。
Uint8List reverseUint8List(Uint8List list) {
return Uint8List.fromList(list.reversed.toList());
}
长话短说,这是为了避免为每个 Iterable
的实现重复 99% 的 reversed
代码,虽然它对输出没有意义(反向列表不能突然变成了 queue/set/whatever),这在实现上确实有意义,因为这些数据类型在这方面都很相似。