FSharp 内嵌 API 添加变量

FSharp embedded API add variables

使用 Fsharp.Compiler.Serice Interactive API 我想为我的 FsiEvaluationSession 对象设置变量。这可能吗?或者是否有另一种方法可以将 f# 嵌入到应用程序中以用于嵌入式脚本?

我认为没有直接的方法可以做到这一点,但有一个很好的解决方法:

// Define a mutable variable with default value
fsiSession.EvalInteraction "let mutable myVar = Unchecked.defaultof<int>"

// Create a function that sets the value of the variable
let f = evalExpressionTyped<int -> unit> "fun x -> myVar <- x"  

// Run the function to set the value of `myVar` to whatever we want
f 42

// As a bonus, use variable shadowing to make it immutable
fsiSession.EvalInteraction "let myVar = myVar"

这使用了 FCS 文档中的 evalExpressionTyped 助手。