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);
浙公网安备 33010602011771号