8

入力構造を受け取り、出力構造を返す関数があるとします(これは入力構造に関連しているが異なる場合があります)。

これらの入出力構造を特定のタイプに強制したくはありません。必要な動作がいくつかあることを確認したいだけです。

するべきか?

a)適切な抽出メソッドを持つクラスを定義し、入力データをそのクラスのインスタンスにするように強制しますか?または
b)関数に、データの抽出方法を定義する関数である別のパラメーターを受け入れさせる。

また、出力構造についても同じ質問があります(今回は、必要な機能がミューテーションであることを除いて)?

4

4 に答える 4

10

明示的な関数の引数と型クラスのどちらかを選択する必要があるときはいつでも、この最も重要な質問を自問する必要があります。関数は型またはアプリケーションに固有ですか?前者の例はsort、であり、後者の例はですmap

関数を渡すことは常により柔軟ですが、それはあなたの状況にとってやり過ぎであり、不必要なコードの膨張を引き起こす可能性があります。一方、型クラスはコードをはるかに小さくしますが、柔軟性も低くなります。

これ以上の情報がなければ、ここでより正確な答えを出すことはできません。

于 2012-07-11T00:55:31.457 に答える
3

場合によります。

型クラスの利点は、関数をヘルパー関数に明示的に渡す必要がないことです。したがって、3つ以上の関数がある場合、または多くの関数が同じ基本的な変換関数で動作することを期待している場合は、型クラスの方がおそらく優れています。

于 2012-07-11T00:07:05.040 に答える
0

「私は彼らが私が必要とするいくつかの行動を持っていることを確認したいだけです。」–これは、型クラスの目的をほぼ説明しています。ただし、出力構造についてはわかりませんが、関数は特定の型を返す必要があると思います。同じ型クラスのインスタンスであっても、いくつかの型の1つを返すことはできません。

于 2012-07-11T00:09:48.577 に答える
0

型クラスは、関数への型の一意のマッピングを提供します。したがって、型に対して常に同じ関数が必要かどうかを尋ねる必要があります。たとえば、ベクトルを関数に渡し、関数にベクトルのノルムが必要な場合、多くの有用なノルムがあるため、通常、型クラスを使用することはお勧めできません。このような場合、関数パラメータが望ましいです。

于 2012-07-19T07:26:08.003 に答える