首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何返回Func<Func<string,int>,int>

如何返回Func<Func<string,int>,int>
EN

Stack Overflow用户
提问于 2017-02-22 10:34:05
回答 2查看 153关注 0票数 0

最近,我发现了如何从方法返回方法/函数,例如:

代码语言:javascript
复制
public static Func<string, int> Parse() {
    return x => Int32.Parse(x);
}

出于纯粹的好奇心,我想知道我能走多远。是否有可能以某种方式返回一个Func<Func<string, int>, int>

代码语言:javascript
复制
public static Func<Func<string, int>, int> PlusSomething(this Func<string, int> parser) {
    return x => x + parser; //Obviously doesn't work
}

我做的最接近的事就是

代码语言:javascript
复制
public static Func<string, int, int> PlusSomething(this Func<string, int> parser) {
    return (x, y) => parser(x) + y;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-22 11:05:11

由于不太清楚你想要实现什么,我要做一些猜测工作。

Func<Func<string, int>, int>是一个函数,它接受一个函数并返回一个int。

一种可能性是,您希望返回一个函数,该函数接受一个函数f,将其应用于一个字符串并返回一个int。在这种情况下,您必须指定要应用函数f的某个位置。或者当您生成函数时

代码语言:javascript
复制
public static Func<Func<string, int>, int> PlusSomething(string s) {
    return f => f(s);
}

无论是在应用该函数时

代码语言:javascript
复制
public static Func<Func<string, int>, int, int> PlusSomething() {
    return f, s => f(s);
}

看第二个例子,在我看来(我可能错了),您实际上希望返回一个带int的函数并返回一个函数。

代码语言:javascript
复制
public static Func<int, Func<string, int>> PlusSomething(Func<string, int> parser) {
    return x => (y => x + parser(y));
}

这将允许类似于

代码语言:javascript
复制
var gen = PlusSomething(parser);
var parsePlus4 = gen(4);
int x = parsePlus4("8"); // x == 12
票数 1
EN

Stack Overflow用户

发布于 2017-02-22 10:40:31

要回答所述的问题--是的,有可能有一个具有所述签名的函数,如下所示。

代码语言:javascript
复制
public static
Func<Func<string,int>,int>
PlusSomething(this Func<string, int> parser)
{
    return x => 1;
}

然而,还不清楚期望的结果是什么,以及输入应该如何与期望的输出相关联;从语法上讲,这是可能的。

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

https://stackoverflow.com/questions/42388746

复制
相关文章

相似问题

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