1

私が実行しているさまざまなテストのグループの結果によってトライアルを保存できるデータ構造を構築しようとしています。テストはすべて多数の証跡で構成されていますが、保存して後で使用したい情報の一部は、テストごとに異なります。たとえば、TestA の結果は次のようになります。

Trial(int)   WasResponseCorrect(bool)   WhichButtonWasPressed(string)   SimulusLevel(double)

   1                  false                         "Up"                         3.5
   2                  true                          "Left"                       6.5

TestB にはさまざまなタイプの結果フィールドがある可能性があります。

Trial(int)    WasResponseCorrect(bool)    ColorPresented(string)    LetterPresented(char)     LetterGuessed(Char)
  1                     false                      green                     G                        C

  2                     false                      blue                      H                        F

フィールド名をキー(WasResponseCorrectなど)とし、フィールド値の配列をdicの値とする辞書を作成することを考えていました。その方法がわかりません。情報を保存するためのより良い方法があるかもしれませんが、その方法が思いつきません。私は .net (VB と C#) を使用していますが、他の言語の例を知っていれば、ほとんどのコードを理解して変換できると思います。ありがとう!

4

1 に答える 1

4

要件 (たとえば、データを保存する方法) について詳しく知らなくても、探しているのはポリモーフィズムのようです。つまりTrial、特定の試行タイプを表すスーパークラス ( と呼ばれる) とサブクラスがあります。例えば:

public class Trial {
    public int Id { get; set; }
    public bool WasResponseCorrect { get; set; } // if this is in every type of trial
    // anything else that is common to ALL trial types
}

public class TrialA : Trial {
    public string WhichButtonWasPressed { get; set; }
    public double SimulusLevel { get; set; }
}

public class TrialB : Trial {
    public string ColorPresented { get; set; }
    public char LetterPresented { get; set; }
    public char LetterGuessed { get; set; }
}

そうすれば、オブジェクトのリストをTrial取得できますが、それらのオブジェクトの実際の実行時の型はTrialAまたはになりTrialBます。

于 2012-08-27T18:08:33.213 に答える