2011-07-17 12 views

Odpowiedz

25

Jeśli chcesz parametry contructor być dostępne jako pola klasy, trzeba zadeklarować je jako Vals lub Vars:

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

} 
+3

Albo zadeklarować klasę jako "klasę case", gdzie można uzyskać tego rodzaju rzeczy za darmo. –

+0

'case class' jest bliżej POJO; zobacz szczegóły: http://stackoverflow.com/questions/9673233/how-is-the-pojo-javabean-pattern-treated-in-scala – Neil

15

Pełen POJO Experience ™, w tym równości, hashCodes i sane realizacja toString ... będziemy chcieli klas przypadków:

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

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

parametrów do klasy sprawy są automatycznie wykonane w odstępach. Ty, , możesz jawnie zrobić je vars, jeśli chcesz, ale to coś jest zwykle źle widziana w Scala - gdzie niezmienne obiekty są faworyzowane.

3

Problem polega na tym, że wywołuje się metodę pobierającą SimpleClass.myInt, ale użytkownik nie zdefiniował metody pobierającej w dowolnym miejscu. Trzeba zdefiniować metodę SimpleClass.myInt getter lub nawet jeszcze lepiej, dostać Scala automatycznie definiować go dla Ciebie:

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

Odpowiednik Java z definicji Scala jest:

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

Nie dziwi to robi” t praca ...

Hej, koleś, to jest twoje 17-sze pytanie o scalę i wciąż jesteś zaniepokojony podstawami tego języka. Być może powinieneś wziąć popołudnie i przeczytać niektóre samouczki on-line (lub jakąś książkę), aby skonsolidować swoją wiedzę. Mogę zaproponować:

+9

+1 dla "Hej koleś" :-) – Landei