簡體   English   中英

F#相當於Eval

[英]F# equivalent to Eval

是否有與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程序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 Reflection加載程序集並從程序集中運行某些特定的函數或類(例如,您可以查找具有某些特殊名稱或標記有某些屬性的函數) )。

(作為旁注,如果您的源代碼相對簡單,可以選擇使用引文或編寫您自己的解釋器,如相關的SO問題中提到的那樣,但如果您想支持F#的全部功能,則可能不是這樣)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM