本文整理汇总了C#中Value.Apply方法的典型用法代码示例。如果您正苦于以下问题:C# Value.Apply方法的具体用法?C# Value.Apply怎么用?C# Value.Apply使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Value
的用法示例。
在下文中一共展示了Value.Apply方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SumIf
public static Value SumIf(Value v0, Value v1)
{
if (v0 is ErrorValue) return v0;
if (v1 is ErrorValue) return v1;
FunctionValue fv = v0 as FunctionValue;
if (fv == null)
return ErrorValue.argTypeError;
if (fv.Arity != 1)
return ErrorValue.argCountError;
// We're using Kahan's accurate sum algorithm; see Goldberg 1991.
double S = 0.0, C = 0.0;
v1.Apply(delegate(Value v) {
if (!Double.IsNaN(S)) {
double condition = NumberValue.ToDoubleOrNan(fv.Call1(v));
if (Double.IsNaN(condition))
S = condition; // Error propagation from predicate
else if (condition != 0) {
double Y = NumberValue.ToDoubleOrNan(v) - C, T = S + Y;
C = (T - S) - Y;
S = T;
}
}
});
return NumberValue.Make(S);
}
示例2: CountIf
public static Value CountIf(Value v0, Value v1)
{
if (v0 is ErrorValue) return v0;
if (v1 is ErrorValue) return v1;
FunctionValue fv = v0 as FunctionValue;
if (fv == null)
return ErrorValue.argTypeError;
if (fv.Arity != 1)
return ErrorValue.argCountError;
double count = 0.0;
v1.Apply(delegate(Value v) {
if (!Double.IsNaN(count)) {
double condition = NumberValue.ToDoubleOrNan(fv.Call1(v));
if (Double.IsNaN(condition))
count = condition; // Hack: Error propagation from predicate
else if (condition != 0)
count++;
}
});
return NumberValue.Make(count);
}