/ / Czy w konstruktorze Scala jest wartość lokalna / zmienna? - Scala, konstruktor

Czy istnieje lokalna wartość / zmienna w konstruktorze Scala? - scala, konstruktor

W Javie rozumiem pola klas jako zmiennektóre są dostępne z całego miejsca w klasie i tego rodzaju opisują strukturę stanu instancji. W polu Java są zdefiniowane poza jakąkolwiek metodą (i to jedyna rzecz, która może znajdować się poza metodami).

W Scali najważniejsze jest „poza jakąkolwiek metodą”konstruktor - innymi słowy: nie ma „poza jakąkolwiek metodą”. Zatem pola są zdefiniowane w głównym konstruktorze. Zatem dowolna zmienna / wartość w konstruktorze jest polem. Nawet argumenty podane konstruktorowi są automatycznie polami klas, a nie lokalnymi zmiennymi konstruktora, jak w Javie.

Na wypadek, gdyby wszystko było dobrze: Czy w konstruktorach Scala są lokalne zmienne / wartości?

Jeśli nie: dlaczego zdecydowano, że coś takiego nie jest potrzebne?

Wyjaśnienie: Pytam o koncepcje, a nie o konkretny przypadek. Również ja nie rób zapytaj, jak obejść, aby uzyskać coś w rodzaju zmiennych lokalnych (chociaż byłbym wdzięczny, gdyby odpowiedź brzmiała, że ​​nie ma żadnych).

Odpowiedzi:

1 dla odpowiedzi № 1

Całe ciało klasy jest „wykonawcą”.

Zawsze możesz ograniczyć zakres dowolnej zmiennejbyć małym jak chcesz z parą aparatów ortodontycznych, więc nie ma powodu, aby wprowadzać dodatkową „koncepcję”, która nie służy żadnemu konkretnemu celowi. Brzytwa Ockhama.

  class Foo(bar: String) { // constructor parameter
val baz = "baz";  // class member
{
val bat = "bat" // "local" variable
println(bar + baz + bat) // all three are visible
}
println(bar + baz) // only first two are accessble
}
println (new Foo("bar").baz) // only class member can be accessed here