首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向Ncalc添加新函数

如何向Ncalc添加新函数
EN

Stack Overflow用户
提问于 2013-09-18 22:43:28
回答 1查看 6.6K关注 0票数 2

我在我的新项目中使用了Ncalc,它已经拥有了我需要的几乎所有东西。

我说了几乎所有的内容,因为现在我需要扩展一些函数,还需要添加新的函数,例如:第n根、随机数等

你知道有没有人已经实现了这些函数?或者你能给我一些提示或指南来扩展Ncalc的函数列表吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-09-26 04:58:30

如果我理解正确的话:

正如我所使用的,它是通过创建一个静态函数来实现的

代码语言:javascript
复制
private static void NCalcExtensionFunctions(string name, FunctionArgs functionArgs)
{
    if (name == "yourfunctionname")
    {
        var param1 = functionArgs.Parameters[0].Evaluate();
        var param2 = functionArgs.Parameters[1].Evaluate();
        //... as many params as you require
        functionArgs.Result = (int)param1 * (int)param2; //do your own function logic here
    }
    if (name == "random")
    {
        if(functionArgs.Parameters.Count() == 0) 
        {
            functionArgs.Result = new Random().Next();
        }
        else if(functionArgs.Parameters.Count() == 1) 
        {
            functionArgs.Result = new Random().Next((int)functionArgs.Parameters[0].Evaluate());
        }
        else 
        {
            functionArgs.Result = new Random().Next((int)functionArgs.Parameters[0].Evaluate(), (int)functionArgs.Parameters[1].Evaluate());
        }
    }
}

然后使用它,如下所示

代码语言:javascript
复制
var expr = new Expression("yourfunctionname(3, 2)");
expr.EvaluateFunction += NCalcExtensionFunctions;
var result = expr.Evaluate();

var randExpr = new Expression("random(100)"); 
randExpr.EvaluateFunction += NCalcExtensionFunctions;
var resultRand = randExpr.Evaluate();

我希望我没有打错任何代码。可以在以下位置找到NCalc内置函数的列表:http://ncalc.codeplex.com/wikipage?title=functions&referringTitle=Home

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18875348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档