2011-07-17 3 views

答えて

25

あなたはコンストラクタのパラメータは、クラスのフィールドとして利用できるようにしたい場合は、ヴァルスやVARSとして宣言する必要があります。平等を含む完全なPOJO体験™、ハッシュコードについては

class SimpleClass (val myInt: Int, val myString: String) { 

} 
+3

それともあなたは自由のためにそういったことを取得する "ケースクラス"、としてクラスを宣言します。 –

+0

'case class'はPOJOに近いです。詳細はこちらを参照してください:http://stackoverflow.com/questions/9673233/how-is-the-pojo-javabean-pattern-treated-in-scala – Neil

15

そしてtoStringの健全な実装が...あなたはケースクラスをお勧めします:ケースクラスに

case class SimpleClass(myInt: Int, myString: String) 

val mySimple = SimpleClass(1, "hi") 
println(mySimple.myInt) 

パラメータを自動的にヴァルスに作られています。 は、望むなら明示的にそれらをvarsにすることができますが、このようなことは通常、不変なオブジェクトが好きなScalaにぶち壊されます。

3

問題は、SimpleClass.myIntゲッターメソッドを呼び出していても、どこでもゲッターメソッドを定義していないことです。あなたはSimpleClass.myInt getterメソッドを定義したり、より良いまだ、Scalaは自動的にあなたのためにそれを定義するために取得する必要があります:

class SimpleClass(val myInt: Int, myString: String) {} 
21

あなたのScala定義のJavaのと同等です:

public class SimpleClass { 
    public SimpleClass(int myInt, String myString) { 
    } 
} 

ありませんが、それはdoesnの不思議仕事...

これはあなたの17番目のスカラーの質問です。あなたはまだ言語の非常に基本に悩まされています。おそらく、あなたは午後を過ごし、あなたの知識を集約するためにチュートリアルのオンライン(またはいくつかの本)を読むべきです。私が提案することができます:

  • http://www.codecommit.com/blog/scala/roundup-scala-for-java-refugees
  • http://www.ibm.com/developerworks/java/library/j-scala02198/index.html

      (リスト11-13を参照)
  • +9

    +1「Hey dude」:-) – Landei

    関連する問題