gpt4 book ai didi

c# - 从 C# 调用 F# 函数

转载 作者:太空狗 更新时间:2023-10-29 19:54:52 27 4
gpt4 key购买 nike

我看过其他说明,但仍然不知道如何执行此操作。我有两个项目(C# 中的计算器和 F# 中的逻辑)。我在计算器中添加了对 Logic 的引用,以及对 FSharp.Core 的引用

但是当我添加行时

float result = Logic.start(formula);

在我的 C# 项目中,我收到一条错误消息:

"The name Logic does not exist in the current context."

逻辑项目中有一个模块逻辑,所以它应该显示出来吧?我还缺少什么?

编辑:这是函数定义...

let start formula =
core (List.ofSeq formula) [] []

最佳答案

您不能仅从 C# 引用没有任何 namespace 的 F# 模块。做这样的事情:

// F# project
namespace Some
module Logic =
let start formula =
.....

或等效

// F# project
module Some.Logic
let start formula =
.....

// C# project
.....
Some.Logic.start(formula)

并从 C# 项目中引用 F# 项目。

更新:作为JackP指出,存在另一种选择,允许完全避免在 F# 端使用显式命名空间。

当在 C# 中创建一个位于任何命名空间之外的类时,可以通过在其名称前加上 global 上下文关键字后跟 :: 运算符来引用此类,这是引用方式default top-level .NET namespace .从引用的角度来看,在任何命名空间之外具有简单名称的 F# 模块等同于具有 namespace global 的模块。在代码的第一行。将此考虑应用于您的情况,您可以选择:

// F# definition
// namespace global is assumed
module Logic
let start formula =
.....

// C# reference
...global::Logic.start(formula)...

有关 global:: 的详细信息可在 MSDN 上找到.

关于c# - 从 C# 调用 F# 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20450103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com