2017-04-18 14 views
1

は、私はこのようなレコードタイプでプログラムパラメータのセットを持っていると言うパラメータ:プログラムのレコードタイプを使用すると、

type Parameters = {Name : string; Number : int ...} 

また、実際に、私が最初にCLIパラメータやDBコールか何かからそれを埋めると言うが。

プログラムの後半に、パラメータに追加する追加情報があります。私の質問は、(私はベストプラクティスは何ですか?)何らかのタイプのTBDパラメータを使用してパラメータを定義できますか?例えば

type Parameters {...;TBD : Dictionary<string, string> } 

私が起動したときに、私は私が(最初に設定)したパラメータを埋めることができるので、以降、TBDの事が知られているとなると、paramemetersにそれを追加しますか?

それは意味がありますか?これは正しい方法ですか、それとも私が完全に欠けているより良いアプローチですか?

答えて

3

私は可能な限り簡単な方法で作業を始めなければならないと思います。この場合、質問の最初のソース行のようなプレーンフィールドのレコードをそのまま使用することを意味します。 F#では、これは少しの労力で長い道のりを得るでしょう。構成が大雑把になって、それに対処するためにさらに高度なものが必要だと感じたら、変更を検討することができます。

1

一般に、識別された共用体は、パラメータ/引数に対してうまく機能します。 ArguまたはCommandLineを見てください(設計だけであっても、あなたのニーズに合ったものではありません)。これは、パラメータ空間を事前に定義することができ、固定されていることを前提としています。

事前にパラメータを知っていない場合でも、デフォルトのレコードを定義して、利用可能になるとフィールドをwithに更新することができます。必要に応じてSome/Noneを使用することができます。しかし、引数名がわからなくても(つまり、レコードの新しいフィールドになります)、新しいキー値エントリを追加していくうちに、辞書/マップ自体に行きます。これは引数です。

関連する問題