gpt4 book ai didi

f# - 将 C# 'using' 关键字转换为 F#

转载 作者:行者123 更新时间:2023-12-01 09:18:16 26 4
gpt4 key购买 nike

在尝试将以下 C# 代码转换为 F# 时,我遇到了 'using' 关键字。以下片段来自 ILNumerics图书馆。以下内容如何翻译?

ILRetArray<double> ObjFuncBFGS2D(ILInArray<double> X) {
using (ILScope.Enter(X)) {
return X[0] * X[0] + X[1] * X[1] + 2;
}
}

顺便说一句,F# 人们倾向于使用哪些库进行优化?我一直在使用 NLoptNet,但是在 Matlab 和 Julia 和 Python 中正确收敛的例程存在非常奇怪的收敛问题。因此,问题出在我的 F# 翻译(这更有可能)或优化库上。这是我希望确定的。坦率地说,我对互联网上缺乏与 F# 相关的数值优化 Material 感到有些惊讶。

最佳答案

The MSDN documentation on resource management in F#在这里是相关的。要自动处理,F# 中的常用方法是:

  • use,替换 let 并在绑定(bind)超出范围时释放
  • using,一个在完成时将资源释放的函数和一个在释放前执行的函数,该函数将可释放对象作为输入。

带有 use 的代码可能如下所示:

let ObjFuncBFGS2D (X : ILInArray<double>) =
use myEnteredScope = ILScope.Enter(X)
X.[0] * X.[0] + X.[1] * X.[1] + 2

或者,使用 使用,像这样:

let ObjFuncBFGS2D (X : ILInArray<double>) =
using (ILScope.Enter(X)) <| fun _ ->
X.[0] * X.[0] + X.[1] * X.[1] + 2

我不使用 ILNumerics,也无法对其进行语法检查,但我希望思路清晰。

关于f# - 将 C# 'using' 关键字转换为 F#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39057859/

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