F#读取将参数传递到脚本文件

F#读取将参数传递到脚本文件,f#,f#-data,literate-programming,f#-scripting,F#,F# Data,Literate Programming,F# Scripting,我正在使用F#格式进行一些编程 我的用例是,我有几百个数据集需要运行,对于每一个数据集,我想创建一些统计数据和图表的“报告”。它们都是相同的格式 所以我想要的是一个带有F#代码和标记的fsx脚本文件,它可以在循环中解析以生成单独的html文件 我当前的代码如下所示: // Create FSI evaluator with transformation enabling charts to show. let fsiEval = FsiEvaluator() fsiEval.RegisterT

我正在使用F#格式进行一些编程

我的用例是,我有几百个数据集需要运行,对于每一个数据集,我想创建一些统计数据和图表的“报告”。它们都是相同的格式

所以我想要的是一个带有F#代码和标记的fsx脚本文件,它可以在循环中解析以生成单独的html文件

我当前的代码如下所示:

// Create FSI evaluator with transformation enabling charts to show.
let fsiEval = FsiEvaluator() 
fsiEval.RegisterTransformation(transformation)
let source = __SOURCE_DIRECTORY__
let template = Path.Combine(source, "zeros.html")
let script = Path.Combine(source, "zeros.fsx")
Literate.ProcessScriptFile(script, templateFile = template, fsiEvaluator = fsiEval, output = "rendered.html")
这很好,但我必须硬编码我在“zeros.fsx”文件中查看的数据集。我想将参数传递到此方法中:

Literate.ProcessScriptFile(script, templateFile = template, fsiEvaluator = fsiEval, output = "rendered.html")
所以我可以循环使用它并生成所有不同的报告。但是我在文档中找不到如何做到这一点。

您可以在运行脚本之前使用
fsiEval
对象运行任意F#代码,因此一种方法是编写一些定义全局变量的代码,然后从脚本中可以看到该变量(尽管如此,在编辑脚本时,F#编辑器中会出现错误…。执行此操作的代码:

let fsiEval = FsiEvaluator() 
let ifsi = fsiEval :> IFsiEvaluator
ifsi.Evaluate("let magic = 40", false, None)
我的测试文件现在显示结果为42:

let res = 2 + magic
(*** include-value: res ***)

这适用于您可以通过源代码合理传递的配置-我不确定是否有一种向脚本传递更复杂对象的好方法。

谢谢您,托马斯。这对我来说非常有用。如果您需要复杂对象,我想您可以使用json字符串并从那里开始。