fuse<R> 方法

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

other融合。

在编码时,生成的编码器先使用other进行编码,然后再使用this

在解码时,生成的编码器先使用this进行解码,然后再使用other

在某些情况下,需要使用反转编码器才能正确融合。也就是说,this的输出类型(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);
}