F#识字的参数传递给脚本文件

问题描述 投票:3回答:1

我使用F#格式化做一些Literate编程。

我使用的情况是,我有几百数据集,我需要通过运行,并为每个我想创建一个一些统计数据和图表的“报告”。他们都是相同的格式。

所以,我要的是刚刚与F#代码和降价,可在循环解析,生成单独的HTML文件中的一个FSX脚本文件。

我当前的代码如下所示:

// 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")

所以我可以遍历并产生我所有的不同的报告。但我不能文档如何做到这一点的发现。

f# f#-data literate-programming f#-scripting
1个回答
4
投票

您可以使用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 ***)

这适用于配置,你可以通过合理的源代码经过 - 我不知道是否有路过周围更复杂的对象到脚本的一个好办法。

© www.soinside.com 2019 - 2024. All rights reserved.