1

一連の fs ファイルを fsx ファイルに変換したいと考えています。

これらの各 fs ファイル参照クラスは、たとえば base.fs で定義されているため、プロジェクトでコンパイルしてコンパイラの解決に依存するのではなく、すべてファイル ベースになります。

つまり、base.fsx をインクルードするすべてのファイルがあり、1 つのファイルが別のファイルを参照している場合、base.fsx が 2 回インクルードされることになります。

fsxファイルで条件付きインクルードを作成する方法を知っている人はいますか?

プリプロセッサのドキュメントの状態

F# には #define プリプロセッサ ディレクティブはありません。#if ディレクティブで使用されるシンボルを定義するには、コンパイラ オプションまたはプロジェクト設定を使用する必要があります。

4

1 に答える 1

5

単一のfsxスクリプトからすべてのファイルをロードする場合、プロジェクトから個々のファイルを正しい順序でロードでき、個々のライブラリ ファイルをbase.fs直接ロードする必要はありません。コードはロードされているため、定義されます。前。

たとえば、次の場合base.fs:

module Base   
let test() = 10

whichはロードさmore.fsれませんが、そこで定義された関数を使用します。base.fs

module More   
let more () =
  Base.test() + 1

次に、すべてのファイルを F# インタラクティブ (たとえば、script.fsx) にロードすると、正常に動作します。

#load "base.fs"
#load "more.fs"

More.more()

唯一の欠点は、編集時に IntelliSense が得られないことですmore.fs(エディターは を認識しないためbase.fs)。これを回避するには、ファイルを Visual Studio のプロジェクトに保持することをお勧めします。ただし、実験とテストのために F# インタラクティブに読み込むことはできます。

于 2013-03-03T18:18:44.653 に答える