加载+重新加载 fsx 文件的推荐方法是什么?只是试验......是的,是的,正确的语言,正确的工作等等。
我喜欢如何在 FSI 中完成以下工作:
#load "script.fsx";
open Script
> let p = script.x 1
Error: This expression was expected to have type string but here has int...
(* edit script.fsx x to make it int -> int *)
>
> #load "script.fsx"
> let p = script.x 1
val it : int = 2
但是我们如何为通过 fsi blah.fsx 运行的应用程序执行此操作?也许是坐在一个while循环中的东西。似乎#load 和#use 不能在let 或module 中。即你不能像let reload script = #load script 那样使用#load,想知道为什么?
我最初的方法是拥有 .fs 文件并在每次我想添加/修复某些内容时重新编译 + 重新启动。这种方法感觉很原始。
第二种方法是尝试在模块内使用 #load 指令,结果证明它不起作用(就范围而言有点意义)......
module test1 =
#load @"C:\users\pc\Desktop\test.fsx"
open Test
module test2 =
...
另一种方法是通过加载带有进程诊断的 fsi module.fsx 来为每个模块创建一个新进程,但这看起来很糟糕、效率低下而且呃。
我内心深处有一种感觉,这在 .NET 中不会是微不足道的,但无论如何我想提出这个问题,FSI 做到了......我想知道我是否可以利用 FSI API 或其他东西(或至少复制他们的代码)?
TL;DR 我阅读了以下有关 erlang 的内容,并希望在 F# 中为自己使用它。 Erlang:有没有办法用 rebar 将更改的模块重新加载到已经运行的节点中?
“...只要程序中的模块在磁盘上发生更改,重新加载器就会自动替换正在运行的副本。”