fuse<R>方法

Codec<S, R> fuse<R>(
  1. Codec<T, R> other
)

将当前对象与other对象熔断。

在编码时,结果编码解码器先使用当前对象编码,然后使用other对象编码。

在解码时,结果编码解码器先使用other对象解码,然后使用当前对象解码。

在某些情况下,需要使用反转编码解码器才能正确融合。也就是说,当前对象的输出类型(T)必须匹配第二个编码解码器other的输入类型。

示例

final jsonToBytes = json.fuse(utf8);
List<int> bytes = jsonToBytes.encode(["json-object"]);
var decoded = jsonToBytes.decode(bytes);
assert(decoded is List && decoded[0] == "json-object");

var inverted = json.inverted;
var jsonIdentity = json.fuse(inverted);
var jsonObject = jsonIdentity.encode(["1", 2]);
assert(jsonObject is List && jsonObject[0] == "1" && jsonObject[1] == 2);

实现

// TODO(floitsch): use better example with line-splitter once that one is
// in this library.
Codec<S, R> fuse<R>(Codec<T, R> other) {
  return _FusedCodec<S, T, R>(this, other);
}