小编rkr*_*ahl的帖子

如何在 vscode 中打开文件夹选择器对话框?

我正在编写扩展,它必须支持在用户选择的文件夹中创建新的自定义项目模板(目录结构和少数文件)。有没有办法在 vscode 中打开文件夹选择器对话框?

visual-studio-code vscode-extensions

8
推荐指数
2
解决办法
4511
查看次数

IEnumerable <Func <T,S >>和LINQ类型推断

C#编译器可以正确地推断这些片段中的s(字符串)类型:

 Func<int, string, string> f1 = (n, s) => s.Substring(n);
 Func<int, Func<string, string>> f2 = n => s => s.Substring(n);
Run Code Online (Sandbox Code Playgroud)

但它不能在这一个[1]:

 var numbers = Enumerable.Range(1, 10);
 IEnumerable<Func<string, string>> fs = numbers.Select(n => s => s.Substring(n));
Run Code Online (Sandbox Code Playgroud)

为了使它工作,必须做这样的事情:

var fs = numbers.Select(n => new Func<string, string>(s => s.Substring(n));
Run Code Online (Sandbox Code Playgroud)

要么

var fs = numbers.Select(f2);
Run Code Online (Sandbox Code Playgroud)

问题是 - 如果预先知道关于类型的所有必需信息,为什么类型推断在[1]中不起作用?

c# linq type-inference

5
推荐指数
1
解决办法
162
查看次数

f#中的循环类型引用

我正在为F#中的linq表达式构建器编写简单的excel公式.我正在使用递归表达式构建器将公式解析为AST并构建表达式.我一直坚持将环境((字符串,表达式)映射对)传递给该调用中生成的表达式:

Expression.Lambda<System.Func<double>>(eval pexpr).Compile()
Run Code Online (Sandbox Code Playgroud)

解析pexpr的位置AST和eval是表达式构建函数.

问题是定义类型应该如下所示:

type ExprFunc = Func<ExprFunc map, double>
Expression.Lambda<ExprFunc>(eval pexpr).Compile()
Run Code Online (Sandbox Code Playgroud)

如果pexpr包含对Var("name")形式的其他表达式的引用,我想注入在环境映射中使用"name"搜索函数的表达式并调用它,在该调用中传递相同的环境映射.

不幸的是,编译器说不:

此类型定义涉及通过缩写的立即循环引用

有没有办法在.net中定义这样的函数类型?

.net generics f#

4
推荐指数
1
解决办法
775
查看次数