dsumtype的比较

原文
SumType不会像Algebraic那样尝试转发运算符到包含的值,因此要用tryMatch来访问.

// 比较DataType[]和double[]

import std.algorithm.comparison: equal;

/+
如果左边包含不能同`双精`比较的值,则抛异常
+/
alias cmp = (DataType lhs, double rhs) => lhs.tryMatch!(value => value == rhs);

DataType[] a;
double[] b;
bool result = a.equal!cmp(b);
// 加两个DataType值

/+
addValues会取两个DataTypes作参数,并同时匹配,不能加,则抛异常
+/
alias addValues = tryMatch!((lhs, rhs) => lhs + rhs);

DataType a;
DataType b;
DataType result = addValue(a, b);

1
2

posted @ 2022-09-06 08:59  zjh6  阅读(14)  评论(0)    收藏  举报  来源