gpt4 book ai didi

.net - F# 相当于 Eval

转载 作者:太空宇宙 更新时间:2023-11-03 18:33:38 25 4
gpt4 key购买 nike

是否有与 eval 等效的 F#?我的目的是让我的应用程序从文件中加载一个小代码示例,本质上是

let file = "c:\mysample"
let sample = loadFromFile file
let results = eval(sample)

我是 F# 的新手,在将它应用到项目之前试图找出一些限制。

谢谢

最佳答案

没有允许您直接执行此操作的函数。但是,当您想要以编程方式编译 F# 源文件时,您可以从应用程序中调用 F# 编译器。最简单的方法是使用 F# CodeDOM 提供程序,它作为 F# PowerPack 的一部分提供(在 FSharp.Compiler.CodeDom.dll 程序集中)。但是,请注意,您需要在用户的计算机上安装 F# 编译器。

运行编译器的代码大致如下所示:

open Microsoft.FSharp.Compiler.CodeDom

let provider = new FSharpCodeProvider()
let compiler = provider.CreateCompiler()

let parameters = new CompilerParameters
(GenerateExecutable = true, OutputAssembly = "file.exe")
let results = icc.CompileAssemblyFromFile(parameters, "filename.fs")

将源文件编译成程序集后,您需要使用 .NET 反射加载程序集并从程序集中运行某些特定函数或类(例如,您可以查找具有某些特殊名称或标记的函数具有某些属性)。

(作为旁注,如果您的源代码相对简单,则如 related SO question 中所述,使用引号或编写您自己的解释器可能是一种选择,但如果您想支持完整功能,则可能不是F#)

关于.net - F# 相当于 Eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608114/

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