+ reload fsxファイルをロードするにはどうすればよいでしょうか?ただ、私は次のFSIで行うことができる方法が大好きです。..電気ショック療法電気ショック療法F# 'モジュール化されたスクリプト'
を...はいはい右の言語正しい仕事を試し:
#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
しかし、私たちは私たちが実行しているアプリケーションのためにこれをどのように行うのですかvia fsi blah.fsx?たぶん、あるループの中に座っている何か。 #loadと#useはletまたはmoduleの内部にあってはいけません。つまり、#loadスクリプトを使用することはできません。
私のオリジナルの方法は、何かを追加/修正するたびに.fsファイルを作成し、再コンパイルして再起動することでした。このメソッドはプリミティブを感じます。
第2の方法は、(一種のスコープという点で意味があります)動作しないことが判明した、モジュールの内部で#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: Is there a way to reload changed modules into an already running node with rebar?
"...プログラム内のモジュールがディスク上で変更されると、いつでもリローダは実行中のコピーを自動的に置き換えます。"
ソリューションがあるかもしれません - 'fsiDynamicCompiler.EvalLoadFiles'を使用して - これは何'#のload'コールです。参考までに、https://github.com/fsharp/fsharp/blob/master/src/fsharp/fsi/fsi.fsの1690行にある –
を参照してください。いい考えです。私はfsi.fsについて簡単に見ましたが、私は純粋なコード量私はこれをもう一度見ていきます。 –
私はあなたの質問に答えられたという誤った印象を人々に与えるかもしれないので、私の答えのDavidを削除します。 :-) –