F# FSharp嵌入式API添加变量

F# FSharp嵌入式API添加变量,f#,f#-interactive,f#-compiler-services,F#,F# Interactive,F# Compiler Services,使用,我想为我的fsieevaluationsession对象设置变量。这可能吗?或者有没有其他方法可以将f#嵌入到应用程序中用于嵌入式脚本编写目的?我认为没有直接的方法可以做到这一点,但有一个很好的解决方法: // Define a mutable variable with default value fsiSession.EvalInteraction "let mutable myVar = Unchecked.defaultof<int>" // Create a fun

使用,我想为我的fsieevaluationsession对象设置变量。这可能吗?或者有没有其他方法可以将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"
//使用默认值定义可变变量
fsiSession.EvalInteraction“让可变myVar=Unchecked.defaultof”
//创建一个设置变量值的函数

让f=evalExpressionTyped unit>“funx->myVar我希望找到一种方法将一个非原始类型的主机对象传递到脚本中。不过如果没有更好的方法”会弹出“,我将继续接受这个答案,因为它从技术上回答了上述问题。想法:我总是可以使用字符串,并允许我的对象从字符串加载它的状态。不过这将是一个不同的对象引用。很好的解决方法。但是,我们不能直接使用它的深层原因是什么呢?您也可以使用它来提供非原始类型。您只需首先评估
#r
交互,以加载类型来自的程序集。@FZed我认为FCS API没有理由不能公开此功能。请随意打开一个问题,甚至帮助我们添加它!啊,是的,但问题是我不能很好地传递由我的“基本代码”共享的对象引用,而不仅仅是一个输入。我猜是单身还是静态。