В Scala, если мы имеем
class Foo(bar:String)
Мы можем создать новый объект, но не можем получить доступ к bar
val foo = new Foo("Hello")
foo.bar // gives error
Однако, если мы объявим Foo
как case class
, это работает:
case class Foo(bar:String)
val foo = Foo("hello")
foo.bar // works
Из-за этого мне приходится делать многие из моих классов как классы классов. В противном случае, я должен написать шаблонный код для доступа к bar
:
class Foo(bar:String) {
val getbar = bar
}
Итак, мои вопросы:
- Есть ли способ "исправить" это без использования классов классов или шаблонов?
- Использует ли классы case в этом контексте хорошую идею? (или каковы недостатки классов case?)
Я предполагаю, что второй заслуживает отдельного вопроса.