2017-12-07 7 views
0

私はプログラミングを初めてしています。これは非常に新人の質問かもしれません。 オブジェクトに要素を追加する必要があります。これはどうですか?Scalaのcaseクラスのオブジェクトを追加する

scala> case class test (
           a: String, 
           b: String, 
           c: Int, 
           d: Int 
          ) 





     var teamData_Temp = test(lol, lel,1, 2) 

     var teamData_All = teamData_Temp 

その後、私はteamData_All = (test(lol,lel,1,2),test(kok,kek,3,4))を生成するにはどうすればよい

スクリプトの中でいくつかの点でのがteamData_TempがteamData_temp =テスト(コック、KEK、3,4)となっていることとしましょう?

答えて

2

スカラは、です。スタティックにです。つまり、varで宣言された変数は新しい値で置き換えることができますが、その変数の型はプログラムの存続期間にわたって変更できません。スクリプト内のteamData_Allのタイプはtestですが、タイプを変更しようとしているteamData_AllのタイプはTuple2[test, test](または同等の場合は(test, test)です)。これらは互換性のないタイプです。

teamData_Allを拡張可能にしたい場合は、変数を宣言するときにそのような振る舞いを先に指定する必要があります。タイプList[test]のリストにします。次に、1行にteamData_All = List(test(lol,lel,1,2))を設定して、別の行をteamData_All = List(test(lol,lel,1,2),test(kok,kek,3,4))に設定することができます。

静的型付き言語にこれが必要な理由は、コード内の複数の場所でteamData_Allへの参照を行うと、コンパイラが静的に、つまりコードを実行する前に型teamData_Allは、そのタイプを変更した可能性があるため、特定の時点にあります。これにより、コンパイラは通常の保証を行うことができなくなります(例えば、実際にそのメソッドが定義されているものについてのみメソッドを呼び出すようにするなど)。

+0

これはあなたに邪魔されているようです(通常のプログラミング言語が動的に型付けされていなければならない場合など)、私は数日しか言いません。あなたのコードが複雑になるにつれて、邪魔になるようなものはあなたを導く上で非常に貴重なものになります。 – badcook

+0

それはあなたからの素晴らしいフィードバックです、ありがとう! –

関連する問題