1

前段时间我注意到 VS2012 for Web 中的“监视”窗口不适用于 FSharp 中的默认功能。例如,cos someValue不起作用,在函数开头插入let _cos = cos或插入并使用的解决方法也不起作用。错误类似于“cos 在当前上下文中不存在”或“_cos 在当前范围内无效”等。let _cos x = cos x_cos(someValue)

我应该更改一些设置还是这是一个意外的错误?当然,我可以声明我需要观看的所有结果,但这有点开销,而且非常不切实际。我能做些什么来解决这个问题?

4

1 回答 1

9

参考答案中所述,手表和即时窗口仅支持 C#,因此它们无法评估 F# 表达式并且它们不知道 F# 上下文(例如打开的命名空间)。

总之,将结果存储在局部变量中(编译为普通的局部变量)是查看结果的最佳方式。

更多详细信息: 在某些情况下,您可以编写与您想在 F# 中执行的操作相对应的 C# 代码。这可能只适用于简单的情况,当相应的 C# 不太难编写时,但通常可以做到。例如要调用cos 3.14,您需要编写如下内容:

Microsoft.FSharp.Core.Operators.Cos(3.14)

如果您cos在 F# 源代码中找到该函数(在此处,在 prim-types.fsi 中),那么您可以看到它带有CompiledName告诉编译器将其编译为名为的方法的属性Cos(遵循 .NET 命名准则)。它是在名为的模块中定义的Operators(参见此处),它带有注释,AutoOpen因此您无需open在 F# 代码中显式编写,但它实际上是 F# 编译器在编译代码时生成的类的名称。

于 2013-03-04T02:11:35.297 回答